Вопрос

Я стараюсь использовать 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']);

http://php.net/manual/en/function.utf8-decode.php

$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 (); линия.

ПФФ ..

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top