восклицательный знак отображается в теле сообщения электронной почты с помощью 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));