Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
:huh: Olá, Srs.Estou tentando criar um serviço onde pessoas de uma associação enviam email para o grupo. Criei um formulário básico, com entrada para assunto e mensagem e envio isso pelo php mail, usando um while.O processo, de maneira geral, funciona.O problema é que a mensagem recebida por email perde completamenta a formatação. Os parágrafos deixam de existir.Você sabe como fazer com que a mensagem chegue formatada ao destinatário (pelo menos os parágrafos)?
Não deu.Para um texto simples assim:"Testando essa função com algo mais leve.Aqui temos um parágrafo, será que dá?Aqui temos outro e a palavra aluvião."O sistema desaparece com os parágrafos e envia por email a seguinte mensagem:"Testando essa função com algo mais leve. Aqui temos um parágrafo, será que dá? Aqui temos outro e a palavra aluvião."
Primeiro, se você está digitando a **mensagem** num **<TEXTAREA>** você deverá pegar o resultado desse campo quando enviar o formulário e usar a função **nl2br()** assim:
**PHP** [/tr][tr]$mensagem = $_POST["mensagem"];
$mensagem_com_quebra_de_linha = nl2br($mensagem);
[/tr]
Essa função transfoma as novas linhas em tags <BR>.
Outra coisa mais importante é colocar um cabeçalho text/html no e-mail assim:
PHP [/tr][tr]$cabecalho = "From: $email_remetente\r\nReplayTo: $email_email_remetente\r\nContent-Type: text/html";
[/tr]
Cuide com a variável $email_remetente que está no meio da string que deve ser o endereço de email de quem está mandando a mensagem (é obvio).
ôpa!! Bateu na trave. Tá faltando algum detalhe para dar certo. O que eu tenho é o seguinte: $header = "From: $email_env\r\nReplayTo: $email_reply\r\nContent-Type: text/html"; $header.= "X-Mailer: PHP4 Script Language\n"; $header.= "X-Accept-Language: en\n"; $header.= "MIME-Version: 1.0\n"; $header.= "Content-Transfer-Encoding: 7bit\n";E no final : mail($email, $assunto, $msg, $header);A mensagem está chegando com o código html, tipo assim:<STYLE><!--A:HOVER {color:#000099;}>{ } A {text-decoration: none;}A:HOVER {text-decoration: underline;}--></STYLE> <body link='#006699' vlink='#006699' alink='#006699' topmargin='0' leftmargin='0'><table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='100%' id='AutoNumber1'> <tr> <td> <p align='center'><font face='<? echo Arial Narrow; ?>' size='2'><b>Mensagem de Corretor Associado à RCA</b></font></td> </tr> <tr> <td> </td> </tr> <tr> <td><font face='echo Arial Narrow' size='2'>Mensagem enviada por: José Ruiz Talhari Júnior</font></td> etc...
Bom, primeiro não está faltando as tags <HTML></HTML> no corpo do seu e-mail ?
E onde você está colocando a variável $msg no corpo do e-mail ?
Com essas dicas que lhe foram passadas deve dar certo...
Eu coloquei as TAG <html>, veja:
> $mensagem = $_POST["mensagem"];$mensagem = nl2br($mensagem);$email_env = $email;$email_reply = $email;while ($linha = mysql_fetch_array($resultado)) { $email = $linha['email']; $header = "From: $email_env\r\nReplayTo: $email_reply\r\nContent-Type: text/html"; $header.= "X-Mailer: PHP4 Script Language\n"; $header.= "X-Accept-Language: en\n"; $header.= "MIME-Version: 1.0\n"; $header.= "Content-Transfer-Encoding: 7bit\n"; $msg = "<html><body>"; $msg.= "<table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='100%' id='AutoNumber1'> <tr> <td> <p align='center'><font face='<? echo $fonte; ?>' size='2'><b>Mensagem de Corretor Associado à RCA</b></font></td> </tr> <tr> <td> </td> </tr> <tr> <td><font face='echo $fonte' size='2'>Mensagem enviada por: $nome</font></td> </tr> <tr> <td><font face='$fonte' size='2'>Assunto: $assunto</font></td> </tr> <tr> <td><font face='$fonte>' size='2'>Mensagem:</font></td> </tr> <tr> <td height='5'></td> </tr> <tr> <td><font face='$fonte' size='2'>$message</font></td> </tr> <tr> <td> </td> </tr> <tr> <td> <p align='center'><font face='<? echo $fonte; ?>' size='2'>Rede de Corretores Autônomos do Ceará</font></td> </tr></table>"; $msg.= "</body></html>"; mail($email, $assunto, $msg, $header);}
:( Eu não sei aonde estou errando...Um detalhe que eu notei é que essa linha:$header.= "Content-Type: text/html; charset=us-ascii\n";produz um email limpo, com a estrutura da tabela legal, mas some com os parágrafos de $message.Porém, colocado dessa forma:$header.= "Content-Type: text/html";O resultado é um email com os códigos html, mas ficam mantidos os parágrafos de $message.Preciso de um meio-termo entre os dois: o email contendo a tabela, normalmente, e a $message com seus devidos parágrafos.
Srs: Eu resolvi meu problema da seguinte maneira (com a preciosa ajuda deste fórum, claro):...$message= nl2br($_POST ['message']);... $header = "From: \"".$autor."\" <".$email_env.">\n"; $header.= "Reply-to: \"".$autor."\" <".$email_env.">\n"; $header.= "Content-Type: text/html; charset=iso-8859-1"; mail($email, $assunto, $message, $header);Ou seja, tirei a variável $message da estrutura de uma tabela. Agora ela vai direto na função mail. Tá funcionando.
Tenta adicionar isso no headers...
PHP [/tr][tr]$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";[/tr]