восклицательный знак отображается в теле сообщения электронной почты с помощью phpmailer

Я использую phpmailer для отправки писем на моем веб-сайте. Мой код работает нормально, но иногда в теле сообщения электронной почты содержится восклицательный знак в случайных местах. Мой код выглядит следующим образом:

$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();

Это прекрасно работает. Но не могу понять, почему иногда приходит восклицание. Спасибо заранее...

4 ответов


Я думаю, это потому, что сообщения электронной почты не могут иметь более 998 символов в одной строке.

попробуйте добавить,

$mail->WordWrap = 50;

Я знаю, что это поздно, но есть альтернативное решение, что работал для меня:

использовать эту строку для кодирования всего сообщения с помощью base64:

$message = chunk_split(base64_encode($message));

затем добавьте этот заголовок:

$headers .= "Content-Transfer-Encoding: base64\r\n\r\n";

это сообщит почтовому клиенту, что ваше сообщение закодировано в base64.


Если вы используете PHPmailer, то только одна строка кода должна помочь:

$mail = new PHPMailer();
$mail->Encoding = 'base64';

это будет делать Content-Transfer-Encoding: base64 и chunk_split(base64_encode($message)) внутренне.


У меня также была эта проблема, после долгого поиска я обнаружил, что вы должны wordwrap ваш HTML

$emailContent = '<p>some large html</p>';
$mail->msgHTML(wordwrap($emailContent, 50));