Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jruiz

Enviar mensagem pelo mail

Recommended Posts

: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)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta adicionar isso no headers...

 

PHP [/tr][tr]$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

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."

Compartilhar este post


Link para o post
Compartilhar em outros sites

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).

Compartilhar este post


Link para o post
Compartilhar em outros sites

ô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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.