Estou usando o phpmailer para enviar e-mails no meu site. Meu código funciona bem, mas às vezes no corpo de mensagens de e-mail contém ponto de exclamação em lugares randoms. Meu código é o seguinte:
$mail->SetFrom(FROM_EMAIL,FROM_NAME); //emailid of sender(admin) $mail->Subject = 'Subject here.'; //subject of email $mail->AddAddress(Address here); //emailid of user(recipient) $content = 'some html code here'; $mail->MsgHTML($content); //this is body of email $mail->Send();
Isso funciona bem. Mas não consigo descobrir por que a exclamação vem às vezes. Desde já, obrigado…
Eu acho que é porque as mensagens de e-mail não podem ter mais de 998 caracteres em uma linha.
Tente adicionar,
$mail->WordWrap = 50;
Eu sei que isso está atrasado, mas há uma solução alternativa que funcionou para mim:
Use esta linha para codificar toda a sua mensagem usando base64:
$message = chunk_split(base64_encode($message));
Então, adicione este seu header:
$headers .= "Content-Transfer-Encoding: base64\r\n\r\n";
Isso indicará ao cliente de email que sua mensagem está codificada em base64.
Se você estiver usando o PHPmailer, apenas uma linha de código deve ajudar:
$mail = new PHPMailer(); $mail->Encoding = 'base64';
Isso fará Content-Transfer-Encoding: base64 e chunk_split (base64_encode ($ message)) internamente.
Eu também tive esse problema, depois de uma longa pesquisa, descobri que deveria escrever o seu HTML
$emailContent = 'some large html
'; $mail->msgHTML(wordwrap($emailContent, 50));