Проблемы с кодировкой символов PHPMailer
Я пытаюсь использовать PHPMailer для отправки регистрации, активации. и т.д. пользователям:
require("class.phpmailer.php");
$mail -> charSet = "UTF-8";
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "smtp.mydomain.org";
$mail->From = "[email protected]";
$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("[email protected]");
$mail->AddBCC('[email protected]', '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()
, но не повезло.
Ответы
Ответ 1
Если вы на 100% уверены, что $message содержит ISO-8859-1, вы можете использовать utf8_encode, как говорит Дэвид. В противном случае используйте mb_detect_encoding и mb_convert_encoding в $message.
Также обратите внимание, что
$mail -> charSet = "UTF-8";
Следует заменить на:
$mail->CharSet = 'UTF-8';
И разместил после экземпляр класса (после "нового" ). Свойства чувствительны к регистру! См. PHPMailer doc для списка и точной орфографии.
Ответ 2
$mail -> CharSet = "UTF-8";
$mail = new PHPMailer();
строка $mail -> CharSet = "UTF-8";
должна быть после $mail = new PHPMailer();
и без пробелов!
попробуйте это
$mail = new PHPMailer();
$mail->CharSet = "UTF-8";
Ответ 3
Я работаю таким образом
$mail->FromName = utf8_decode($_POST['name']);
http://php.net/manual/en/function.utf8-decode.php
Ответ 4
$mail = new PHPMailer();
$mail->CharSet = "UTF-8";
$mail->Encoding = "16bit";
Ответ 5
Извините, что опоздал на вечеринку. В зависимости от конфигурации вашего сервера вам может потребоваться указать символ строго с строчными буквами utf-8, иначе он будет проигнорирован. Попробуйте это, если вы в конечном итоге найдете решения, и ни один из приведенных выше ответов не поможет:
$mail->CharSet = "UTF-8";
следует заменить на:
$mail->CharSet = "UTF-8";
Ответ 6
Если ваше сообщение использует Latin1, вы можете использовать utf8_encode
В любом случае, работает для меня.
Ответ 7
@ $mail -> charSet = "UTF-8";
--- эта строка должна находиться под
$mail = new PHPMailer(); line.
пфф..
Да, это правильно. Вы должны поместить его после создания объекта.
Ответ 8
Самый простой способ и поможет вам установить CharSet для UTF-8
$mail->CharSet = "UTF-8"
Ответ 9
Чтобы избежать проблем кодирования символов при отправке писем с использованием класса PHPMailer, мы можем настроить его для отправки его с кодировкой символов UTF-8 с помощью параметра "CharSet", как мы можем видеть в следующем Php-коде:
$mail = new PHPMailer();
$mail->From = '[email protected]';
$mail->FromName = 'Mi nombre';
$mail->AddAddress('[email protected]');
$mail->Subject = 'Prueba';
$mail->Body = '';
$mail->IsHTML(true);
// Active condition utf-8
$mail->CharSet = 'UTF-8';
// Send mail
$mail->Send();
Ответ 10
$mail = new PHPMailer();
$mail -> CharSet = "UTF-8";
Ответ 11
$mail → charSet = "UTF-8"; --- эта строка должна быть под $mail = new PHPMailer(); линия.
пфф..