Проблемы с кодировкой символов 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";

Ответ 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(); линия.

пфф..