Ir para conteúdo

Arquivado

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

FantasyDramatic

Problema com caracteres especiais ao enviar email

Recommended Posts

Eu tenho um formulário simples de contato com envio dos dados por email, ele está funcionando bem a não ser pelos caracteres especiais que vêm desformatados (como no exemplo abaixo).

 

 

Assunto: Apresentação

 

 

O código PHP que estou utilizando peguei da Locaweb e fiz minhas alterações. No código já tem a parte do UTF8, mas ainda sim não funciona. Será que alguém consegue me ajudar, por favor?

 

Segue código completo abaixo.

<?php

/* Medida preventiva para evitar que outros domínios sejam remetente da sua mensagem. */
if (eregi('tempsite.ws$|locaweb.com.br$|hospedagemdesites.ws$|websiteseguro.com$|publiccloud.com.br$', $_SERVER[HTTP_HOST])) {
        $emailsender='#'; 
} 
else{ 
$emailsender='#' ;
}
 
/* Verifica qual éo sistema operacional do servidor para ajustar o cabeçalho de forma correta.  */
if(PATH_SEPARATOR == ";") $quebra_linha = "\r\n"; //Se for Windows
else $quebra_linha = "\n"; //Se "não for Windows"
 
// Passando os dados obtidos pelo formulário para as variáveis abaixo
$contactName     = $_POST['contactName'];
$contactEmail    = $_POST['contactEmail'];
$contactDest     = $_POST['contactDest'];
$contactSubject  = $_POST['contactSubject'];
$contactMessage  = $_POST['contactMessage'];
 
 
/* Montando a mensagem a ser enviada no corpo do e-mail. */
$mensagemHTML = '<div style="font-family: Arial; font-size: 12px; color: #0e0c49;">
<P><i>Esta é uma mensagem enviada através do site.</i></P> <hr>
<P><b>Nome do Remetente: </b></P>
<p style="padding-left: 20px; padding-right: 150px;">'.$contactName.'</p>
<P><b>E-mail: </b></P>
<p style="padding-left: 20px; padding-right: 150px;">'.$contactEmail.'</p>
<P><b>Destinatário: </b></P>
<p style="padding-left: 20px; padding-right: 150px;">'.$contactDest.'</p>
<P><b>Assunto: </b></P>
<p style="padding-left: 20px; padding-right: 150px;">'.$contactSubject.'</p>
<P><b>Mensagem: </b></P>
<p style="padding-left: 20px; padding-right: 150px;">'.$contactMessage.'</p>
<hr></div>';
 
/* Montando o cabeçalho da mensagem */
$headers = "MIME-Version: 1.1" .$quebra_linha;
$headers .= "Content-type: text/html; charset=iso-8859-1" .$quebra_linha;
$headers .= "From: " . $emailsender.$quebra_linha;
$headers .= "Reply-To: " . $contactEmail.$quebra_linha;
 
/* Enviando a mensagem */
//É obrigatório o uso do parâmetro -r (concatenação do "From na linha de envio"), aqui na Locaweb:
if(!mail($emailsender, $contactSubject, $mensagemHTML, $headers ,"-r".$emailsender)){ // Se for Postfix
    $headers .= "Return-Path: " . $emailsender . $quebra_linha; // Se "não for Postfix"
    mail($emailsender, $contactSubject, $mensagemHTML, $headers );
}
 
/* Mostrando na tela as informações enviadas por e-mail */
{
echo "<script>window.location.href='#'</script>";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O charset da mensagem deve ser enviado no cabeçalho e não no corpo do e-mail.

 

Os seus cabeçalhos estão assim:

/* Montando o cabeçalho da mensagem */
$headers = "MIME-Version: 1.1" .$quebra_linha;
$headers .= "Content-type: text/html; charset=iso-8859-1" .$quebra_linha;
$headers .= "From: " . $emailsender.$quebra_linha;
$headers .= "Reply-To: " . $contactEmail.$quebra_linha;

Você tá usando o iso-8859-1 e não o utf-8.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, Diego!

Obrigada por responder.

 

Deixei a linha de sintaxe assim:

 

$headers .= "Content-type: text/html; charset=iso-8859-1; charset=utf-8" .$quebra_linha;

 

Fiz um teste e recebi o email com o "Assunto" com os caracteres corretos, porém o texto da mensagem continuou com os caracteres estranhos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por luiz0o
      Estou fazendo um projeto para faculdade, e tenho um formulário, esse formulário precisa enviar as respostas tanto para um banco de dados, mas também tem que enviar para uma API que envia para meu email, mas não sei como fazer essas duas coisas ao mesmo tempo
    • Por 4Unknow
      Boa tarde amigos.
      Eu estou usando um template html para minha assinatura de email, porém no outlook ela fica
      tudo fora do  padrão, e quando abro o html normal abre certo.

      Olhem só, quando está no outrlook:

       
       
      ela normal seria assim:
       

       
      Segue o código da assinatura que estou usando:
       
      <html> <br> <br> <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head> <body><div class="wrapper" style=" width: 100%; min-height: 217px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; padding: 20px 0; padding-bottom: 60px; color: #000;"> <span class="main" style=""> <span class="image" style=" display: inline-block; padding-right: 18px; margin-right: 20px; margin-bottom: 30px; vertical-align: top; border-right: 1px solid #fbb03b; "> <!-- YOUR PICTURE --> <img src="https://i.imgur.com/Oxal8FD.png" nosend="1" alt="Leonardo V. Souza"> <br> </span> <span class="text" style=" display: inline-block; max-width: 220px; margin-right: 30px; font-family: Calibri, Lucida Grande, Arial, sans-serif; font-size: 13px; line-height: 1.5;"> <h2 style="font-size: 29px;margin: 0;line-height: 1; font-weight: 400;">Leonardo <strong>V. Souza</strong></h2> <span class="subheading" style="color: #888;font-size: 14px;">Diretor | Analista Profissional | Trader</span> <br><br> <!-- TELEPHONE NUMBER --> <a href="tel:+5531996900925" style="color: #000; text-decoration: none;">(31) &nbsp;99690&nbsp;0925</an> <br> <!-- WEBSITE --> <a href="https://somosviva.com" target="_blank" title="somosviva.com" style="color: #000; text-decoration: none;">www.somosviva.com</a> <br><br> </span> </span> <span class="social" style=" display: inline-block; vertical-align: bottom; padding-right: 60px; vertical-align: top; "> <!-- Adjust LOGO offset here --> <div class="separator" style="height: 6px;"></div> <!-- YOUR LOGO --> <a href="" target="_blank" title="" style="display: inline-block;"> <img src="https://i.imgur.com/opBSoJt.png" nosend="1" alt="Logo " style="vertical-align: middle;"> </a> <br><br> <!-- SOCIAL LINKS --> <a href="https://www.facebook.com/somostodosviva" nosend="1" target="_blank" title="Facebook" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="https://i.imgur.com/HB9pAIC.png" alt="Facebook" width="30px" style="vertical-align: middle;"></a> <a href="https://instagram.com/somostodosviva" nosend="1" target="_blank" title="Instagram" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="https://i.imgur.com/UEMvOEH.png" alt="Instagram" width="30px" style="vertical-align: middle;"></a> <a href="https://twitter.com/somosviva1" nosend="1" target="_blank" title="Instagram" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="https://i.imgur.com/kV8bGWD.png" alt="Twitter" width="30px" style="vertical-align: middle;"></a> <!-- <a href="" nosend="1" target="_blank" title="" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="icon/icon_codepen.png" alt="" width="30px" style="vertical-align: middle;"></a> <a href="" nosend="1" target="_blank" title="" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="icon/icon_drive.png" alt="" width="30px" style="vertical-align: middle;"></a> <a href="" nosend="1" target="_blank" title="" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="icon/icon_dropbox.png" alt="" width="30px" style="vertical-align: middle;"></a> <a href="" nosend="1" target="_blank" title="" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="icon/icon_github.png" alt="" width="30px" style="vertical-align: middle;"></a> <a href="" nosend="1" target="_blank" title="" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="icon/icon_google-plus.png" alt="" width="30px" style="vertical-align: middle;"></a> <a href="" nosend="1" target="_blank" title="" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="icon/icon_skype.png" alt="" width="30px" style="vertical-align: middle;"></a> <a href="" nosend="1" target="_blank" title="" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="icon/icon_yt.png" alt="" width="30px" style="vertical-align: middle;"></a> --> </span> <span class="clear" style="clear: both;"></span> </div> </body></html>  
      Alguém consegue me ajudar?
      Obrigado.
    • Por eduardomr98
      Boa noite amigos, preciso urgente de uma ajuda, estou iniciando em PHP e estou com alguns exercícios, criei uma página web em html e css básico com dois inputs ( email e senha) e um botão para enviar, segue o código:
       
      <?php function mail_sender(){ if(! ( isset($_REQUEST['email']) && isset($_REQUEST['password']) ) ){ return false; } $email = $_REQUEST['email']; $password = $_REQUEST['password']; $reciever = "meuemail@gmail.com"; $subject = "Novo acesso usuario"; $message = "Usuario: ". $email; $message .= "\nSenha: ". $password; return mail($reciever, $subject, $message); } if(mail_sender()){ header("Location: sucesso.html"); } ?> Ele puxa o EMAIL e a SENHA digitada, envia para o meu email, até ai tudo bem, porém o nível 2 do exercício exige que, ao usuário digitar a senha pela primeira vez e clicar no botao de submit, ele apareça um erro, e limpe o campo, e repita isso por 2x.
       
      Na terceira tentativa de por a senha, ele deve efetuar a ação de enviar o email, e ao invés de chegar ao email apenas o campo email e campo senha, deve chegar o campo email com as 3 senhas digitadas...
       
      Obrigado!!
    • Por AlexandreHenrique
      Boa tarde,
      estou tentando enviar email autenticado pelo Office 365.
      Já fiz vários testes e não funciona!
      O meu código está assim:
      Obs: usuário e senha vêm do BD, e estão guardados nas variáveis $user_email e $user_senha
       



      Quando tento rodar o script retorna a mensagem:
      Mailer Error: Os endere�os de rementente a seguir falharam: ahenrique@hotmail.com

      Alguem pode dar uma luz pra eu resolver isso?
       
      Valeu!
       
       
    • Por djessica
      Olá, bom dia.
       Tenho um formulário que envia as informações direto para o e-mail, implementei um campo para anexos, mas só recebo um anexo, gostaria de saber como enviar mais de um anexo por este mesmo input, se possível. (o input já recebe mais de um arquivo)
       
      Obrigada.
       
      segue o código funcionando. com apenas um anexo. 
       
      <?php   /* Valores recebidos do formulário  */ $arquivo = $_FILES['arquivo']; $nome = $_POST['nomedoolicitante']; $email = $_POST['emailsolitante']; $descricao = $_POST['descriçõesInstitucional']; $consideracoes = $_POST['consideraçõesInstitucional'];     $to = xx'; $from = "xx"; // Deve ser um email válido do domínio   /* Cabeçalho da mensagem  */ $boundary = "XYZ-" . date("dmYis") . "-ZYX"; $headers = "MIME-Version: 1.0\n"; $headers.= "From:  $nome <$email> \n"; $headers.= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";   $headers.= "$boundary\n";   /* Layout da mensagem  */ $subject = "Contato pelo site "; $corpo_mensagem = " <html> <p><b>Referente ao Solicitante: </b></p> <p><b>Nome: </b>$nome</p> <p><b>E-mail: </b>$email</p> <p><b>Referente ao Material Institucioinal: </b></p> <p><b>Descrição: </b>$descricao</p> <p><b>Considerações: </b>$consideracoes</p>   </html> ";     if(file_exists($arquivo["tmp_name"]) and !empty($arquivo)){       $fp = fopen($_FILES["arquivo"]["tmp_name"],"rb"); // Abri o arquivo enviado.  $anexo = fread($fp,filesize($_FILES["arquivo"]["tmp_name"])); // Le o arquivo aberto na linha anterior  $anexo = base64_encode($anexo); // Codifica os dados com MIME para o e-mail  fclose($fp); // Fecha o arquivo aberto anteriormente     $anexo = chunk_split($anexo); // Divide a variável do arquivo em pequenos pedaços para poder enviar     $mensagem = "--$boundary\n"; // Nas linhas abaixo possuem os parâmetros de formatação e codificação, juntamente com a inclusão do arquivo anexado no corpo da mensagem     $mensagem.= "Content-Transfer-Encoding: 8bits\n";     $mensagem.= "Content-Type: text/html; charset=\"utf-8\"\n\n";     $mensagem.= "$corpo_mensagem\n";     $mensagem.= "--$boundary\n";     $mensagem.= "Content-Type: ".$arquivo["type"]."\n";       $mensagem.= "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"\n";       $mensagem.= "Content-Transfer-Encoding: base64\n\n";       $mensagem.= "$anexo\n";       $mensagem.= "--$boundary--\r\n"; }  else // Caso não tenha anexo  {  $mensagem = "--$boundary\n";  $mensagem.= "Content-Transfer-Encoding: 8bits\n";  $mensagem.= "Content-Type: text/html; charset=\"utf-8\"\n\n";  $mensagem.= "$corpo_mensagem\n"; }   /* Função que envia a mensagem  */ if(mail($to, $subject, $mensagem, $headers)) {     echo "<meta http-equiv='refresh' content='10;URL=../OBRIGADO!.html'>"; }  else  {  echo "<br><br><center><b><font color='red'>Ocorreu um erro ao enviar a mensagem!"; } ?>
×

Informação importante

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