Кодировка Joomla UTF-8 не работает при открытии почты
у меня странная проблема с кодировкой, описанная следующим образом:
теперь отображается как Ã1 в теме письма. Электронная почта отправляется через функцию php mail.
при просмотре электронной почты в почтовом ящике, показано правильно. Однако, когда кто-нибудь открывает электронную почту, то "внезапно меняется на "1".
Uw contact met Meeùs
должно быть
Uw contact met Meeùs
Я уже использовал кодировку.
$emailsubject
содержит выше упомянул тему письма.
$subject=$emailsubject;
$subject=$emailsubject;
$email_message=new email_message_class;
$email_message->SetEncodedEmailHeader("To",$to_address,$to_name);
$email_message->SetEncodedEmailHeader("From",$from_address,$from_name);
$email_message->SetEncodedEmailHeader("Reply-To",$reply_address,$reply_name);
$email_message->SetHeader("Sender",$from_address);
$email_message->SetEncodedHeader("Subject",$subject,"UTF-8");
в localhost он работает правильно, но на веб-сервере он работает неправильно. В webserver также кодировка установлена в utf-8 по умолчанию.
что я делаю неправильно? Спасибо заранее.
4 ответов
ваш код абсолютно правильный, в нем нет ошибки, но его другие вещи не кодируют. Поскольку мне нужны заголовки источников сообщений и сообщения, чтобы точно сказать вам, что происходит? У меня больше нет информации о том, отправляете ли вы электронное письмо в виде обычного текста или HTML. Но есть два вопроса, которые являются:
Отсутствует Mime-Версия
причина неправильного отображения символа-разработчики забывают описать Сообщение Как версию MIME. если сообщение отсутствует заголовок "Mime-Version", который требуется для стандартов интернет-почты, веб-почта полностью игнорирует заголовок" charset", искажая сообщение, если оно уже не находится в наборе символов UTF-8.
отображение темы со специальными символами
Как вы хотите показать тему с кодировкой utf-8, то вы должны кодировать тему как:
//Setting the Language as Japan
mb_language("ja");
//Converting the string into Japan Encoding
$subject = mb_convert_encoding($subject, "ISO-2022-JP","AUTO");
//Now convert the string to MIME Header type
$subject = mb_encode_mimeheader($subject);
если вышеупомянутые вещи не решают проблему, то попросите вас опубликовать необработанные заголовки электронной почты, как это поможет лучше решить проблему.
поскольку вы указываете в комментариях, что используете Joomla 1.5, кажется, есть проблема с phpmailer()
библиотека в этой версии, которая заставляет набор символов почтовика-на сообщении-отправлять вещи, используя настройку набора символов iso-8559-1
. Чтобы исправить это, откройте ядро phpmailer()
libary здесь:
[путь к вашей установке Joomla]/библиотеки/phpmailer/phpmailer.в PHP
около линии 50 нет $CharSet
. Измените это на utf-8
если он еще не установлен на это:
/**
* Sets the CharSet of the message.
* @var string
*/
var $CharSet = 'utf-8';
вы также можете сделать поиск вашей кодовой базы Joomla 1.5 для iso-8559-1
чтобы увидеть, если компонент или библиотека вынуждает iso-8559-1
кодирование где-то в цепочке кода.
и еще один параметр, который я бы рекомендовал проверить, -$Encoding
по линии 63. По умолчанию используется значение 8bit
, но я должен был изменить в прошлом, либо quoted-printable
или base64
решить некоторые рассылки проблемы с конкретными настройками, над которыми я работал.
/**
* Sets the Encoding of the message. Options for this are "8bit",
* "7bit", "binary", "base64", and "quoted-printable".
* @var string
*/
var $Encoding = '8bit';
Я предлагаю вам использовать класс Joomla mailer, мог бы выглядеть так:
$mailer = JFactory::getMailer();
$mailer->setSender(array($from_address,$from_name));
$mailer->addRecipient($to_address, $to_name);
$mailer->setSubject($subject);
$mailer->setBody("BODY MESSAGE STRING");
$mailer->Send();
по умолчанию это utf8, и я не вижу причин не использовать его, если вы используете Joomla.