Я использую 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();
Это прекрасно работает. Но не может найти, почему иногда приходит восклицание. Заранее спасибо…
Я думаю, это потому, что сообщения электронной почты не могут содержать более 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)) внутри.
У меня тоже была эта проблема, после долгих поисков я обнаружил, что вы должны сложить свой HTML-код
$emailContent = '<p>some large html</p>'; $mail->msgHTML(wordwrap($emailContent, 50));