• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

nuno_couto

e-mail

50 mensagens neste tópico

mail("to", "assunto","mensagem", "From: x \nContent-type: text/html\n");

Estou a usar este comando para enviar um email formatado com código html.

Funciona "quase" bem.

Quando o email de destino é iol (por exemplo) o texto surge com erros - os caracteres acentuados, "ç" entre outros ficam substituidos por simbolos ou desaparecem.

Mas se enviar para alguem com gmail por exemplo, funciona na perfeição.

Alguem sabe resolver?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pa, isso e problema do servidor em questao, acho que a unica coisa a fazer e enviar mesmo sem acentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pa, isso e problema do servidor em questao, acho que a unica coisa a fazer e enviar mesmo sem acentos

Isso não é uma solução a sério para o problema...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ya, eu sei, mas tambem nao conheco muito bem o server da iol, mas deve ser um problema de compatilidade

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não pode ser isso... Há algum tempo atrás lembro-me que me aconteceu a mesma coisa (como utilizador) no gmail. Os emails que recebia de um site vinham com esses caracteres trocados. Neste caso no gmail dá tudo bem e o problema surge no IOL...

Não será desta expressão? \nContent-type: text/html\n

Será que não existe qualquer coisa que substitua?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não percebo muito sobre o funcionamento interno do email, mas isso deve estar a mandar o encoding errado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes por aí um exemplo da mensagem enviada e da recebida? só para dissipar uma dúvida...

Cumps :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só com um print screen... É mais fácil explicar... Eu envio a seguinte mensagem:

Olá João.

A mensagem recebida tem um pequeno quadrado que eu vou representar com cardinal:

Ol# Jo#o.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hummm, experimenta escrever "©" que quando receberes deve dar o símbolo de copyright, depois diz se ele aparece ou não.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@nuno_couto tens que colocar    "Content-Type: text/html; charset=ISO-8859-1"

exemplo:

mail("to", "assunto","mensagem", "From: x \nContent-Type: text/html; charset=ISO-8859-1\n");

:D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:/ Afinal não está assim tão perfeito... Eu ando a testar em vários emails e reparei que num email clix a mensagem é recebida em código html...

Não aparece o texto formatado mas sim o código.

Mas no IOL e no Gmail dá perfeitamente. Sabes o que se pode estar a passar?

Já agora... no Clix dá mal mesmo com este código: \nContent-type: text/html\n

Aparece sempre o código html em vez do texto formatado...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:/ Afinal não está assim tão perfeito... Eu ando a testar em vários emails e reparei que num email clix a mensagem é recebida em código html...

Não aparece o texto formatado mas sim o código.

Mas no IOL e no Gmail dá perfeitamente. Sabes o que se pode estar a passar?

Já agora... no Clix dá mal mesmo com este código: \nContent-type: text/html\n

Aparece sempre o código html em vez do texto formatado...

No clix tens que activar a opção para ver os email's em html (se ele tiver essa opção).

Cumps 8)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não é isso... Para alem de não existir essa opção, estou a receber outros emails em html a funcionar bem.

Deve faltar qualquer coisa neste comando para o tornar compatível com todos os emails.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não é isso... Para alem de não existir essa opção, estou a receber outros emails em html a funcionar bem.

Deve faltar qualquer coisa neste comando para o tornar compatível com todos os emails.

Não podes colocar simplesmente "\n" tens que colocar "\r\n" assim:

//Para facilitar
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: email@email.com\r\n";

mail("para@email.com", "assunto","mensagem", $headers); 

Assim vai funcionar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes explicar (se faz favor) o que quer dizer o /r? Eu ocnheço o significado do /n e do /t mas do /r nunca ouvi falar :)

Cumps 8)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pensava que o \n (newline) fazia o cr automáticamente. Obrigado :)

Cumps 8)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Também ainda não percebi bem, mas em alguns casos o \n faz logo o \r automáticamente.

Se alguém puder explicar, também agradecia. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Depende..., esse é um dos problemas do Windows vs Unix :P

Se fizeres um programa para escrever num ficheiro e o executares em windows e em Unix o ficheiro fica diferente :)

abraços, HecKel

PS: Isso já me deu dores de cabeça num trabalho em C :)

EDIT: Tenho ideia que já expliquei isso aqui no P@P, vou procurar a thread :)

EDIT2: http://www.portugal-a-programar.pt/forums/topic/0-find-topic/?do=findComment&comment=41870

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exacto, tinha uma ideia de que variava com o SO, porque às vezes existem certos ficheiros de texto que não funcionam no Notepad por não possuírem o \r.

Obrigado! :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vou tentar explicar....

O \r (retorno de carro) envia o cursor para o principio da frase, ou seja

<?php
$frase =  "Isto é uma\rfrase simples";
echo $frase;
?>

Isto vai mostrar apenas  Isto é uma em vez de mostrar Isto é uma frase simples  porque  o  " \r " fez o cursor voltar para o principio da frase.

O " \r " (retorno de carro)  era utilizado antigamente para criar uma nova linha  o mesmo que o "  \n " (nova linha ou newline) faz agora.  Agora podemos utilizar apenas  " \n " mas a forma padrão de se utilizar é  "  \r\n ". No Windows é preciso colocar  "  \r\n " porque o  "  \n " envia o cursor apenas para baixo e não para o principio da frase, já no Linux podemos utilizar  apenas " \n " porque o \n vai enviar o cursor para baixo e para o principio da linha.

Espero que entendam :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não deveria ser \n \r ? Já há muito que não escrevo numa maquina de escrever mas tenho a impressão que primeiro se faz o gesto para a mudança de linha e só depois 'se anda com o carro'.

Cumps 8)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

(...)

Isto vai mostrar apenas  Isto é uma em vez de mostrar Isto é uma frase simples  porque  o  " \r " fez o cursor voltar para o principio da frase.

(...)

Não deveria mostrar só frase simples?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora