Проблемы кодирования персонажа phpmailer
Вопрос
Я стараюсь использовать PhpMailer для отправки регистрации, активации. и т. д. почта пользователям:
require("class.phpmailer.php");
$mail -> charSet = "UTF-8";
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "smtp.mydomain.org";
$mail->From = "name@mydomain.org";
$mail->SMTPAuth = true;
$mail->Username ="username";
$mail->Password="passw";
//$mail->FromName = $header;
$mail->FromName = mb_convert_encoding($header, "UTF-8", "auto");
$mail->AddAddress($emladd);
$mail->AddAddress("mytest@gmail.com");
$mail->AddBCC('mytest2@mydomain.org', 'firstadd');
$mail->Subject = $sub;
$mail->Body = $message;
$mail->WordWrap = 50;
if(!$mail->Send()) {
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
}
А $message
содержат латинские символы. К сожалению, все веб -почта (gmail, webmail.mydomain.org, emailaddress.domain.xx) используют различное кодирование.
Как я могу заставить кодирование UTF-8, чтобы показать мою почту точно одинаково на всех почтовых ящиках?
Я пытаюсь преобразовать ширину заголовка почты mb_convert_encoding()
, но без удачи.
Решение
Если вы на 100% уверены в сообщении $, содержит ISO-8859-1, вы можете использовать UTF8_ENCODE Как говорит Дэвид. В противном случае используйте mb_detect_encoding а также mb_convert_encoding на $ message.
Также обратите внимание, что
$mail -> charSet = "UTF-8";
Следует заменить на:
$mail->CharSet = 'UTF-8';
А также размещенный после экземпляр класса (после new
) Свойства чувствительны к корпусу! Увидеть Phpmailer Doc Список и точное правописание.
Также кодирование по умолчанию PhpMailer 8bit
что может быть проблематичным с данными UTF-8. Чтобы исправить это, вы можете сделать:
$mail->Encoding = 'base64';
Обратите внимание, что 'quoted-printable'
вероятно, тоже сработает в этих случаях (и, возможно, даже 'binary'
) Для получения более подробной информации вы можете прочитать RFC1341-Поле заголовка-кодирования контента.
Другие советы
$mail -> CharSet = "UTF-8";
$mail = new PHPMailer();
линия $mail -> CharSet = "UTF-8";
Должно быть после $mail = new PHPMailer();
И без пробелов!
попробуй это
$mail = new PHPMailer();
$mail->CharSet = "UTF-8";
Извините за опоздание на вечеринке. В зависимости от конфигурации вашего сервера вам может потребоваться строго указать символ символов строчные буквы UTF-8, в противном случае это будет проигнорировано. Попробуйте это, если вы окажетесь здесь, ищете решения, и ни один из ответов выше не помогает:
$mail->CharSet = "UTF-8";
следует заменить на:
$mail->CharSet = "utf-8";
Я работаю сам таким образом
$mail->FromName = utf8_decode($_POST['name']);
$mail = new PHPMailer();
$mail->CharSet = "UTF-8";
$mail->Encoding = "16bit";
Я получал ó в $ mail-> subject /w phpmailer.
Так что для меня полное решение:
// Your Subject with tildes. Example.
$someSubjectWithTildes = 'Subscripción España';
$mailer->CharSet = 'UTF-8';
$mailer->Encoding = 'quoted-printable';
$mailer->Subject = html_entity_decode($someSubjectWithTildes);
Надеюсь, поможет.
Если ваше сообщение использует Latin1, вы можете использовать UTF8_ENCODEВ любом случае работает для меня.
@ $mail -> charSet = "UTF-8";
--- Эта линия должна быть под
$mail = new PHPMailer(); line.
ПФФ ..
Да, это правильно. Вы должны разместить его после экземпляра объекта.
Самый простой способ и поможет вам, это установлено charset для UTF-8
$mail->CharSet = "UTF-8"
Чтобы избежать проблем кодировки символов при отправке электронных писем с использованием класса PhpMailer, мы можем настроить его, чтобы отправить его с кодированием символов UTF-8 с использованием параметра «charset», как мы можем видеть в следующем коде PHP:
$mail = new PHPMailer();
$mail->From = 'midireccion@email.com';
$mail->FromName = 'Mi nombre';
$mail->AddAddress('emaildestino@email.com');
$mail->Subject = 'Prueba';
$mail->Body = '';
$mail->IsHTML(true);
// Active condition utf-8
$mail->CharSet = 'UTF-8';
// Send mail
$mail->Send();
$mail = new PHPMailer();
$mail -> CharSet = "UTF-8";
$ mail -> charset = "utf -8"; --- Эта строка должна быть ниже $ mail = new phpmailer (); линия.
ПФФ ..