Кодировка Joomla UTF-8 не работает при открытии почты

У меня странная проблема с кодировкой, описанная следующим образом:

теперь ù отображается как ù в теме письма. Электронная почта отправляется через функцию почты php.

При просмотре почты в почтовом ящике она отображается корректно. Однако, когда кто-нибудь открывает электронное письмо, ù внезапно меняется на ù.

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");

На локальном хосте работает нормально, а на веб-сервере не работает. В веб-сервере также по умолчанию установлена ​​​​кодировка utf-8.

Что я делаю неправильно? Заранее спасибо.


person R R    schedule 30.11.2013    source источник
comment
Это похоже на двойное кодирование. Что вы используете для почты? Я считаю, что SetEncodedHeader() не является стандартной почтовой функцией PHP. Что произойдет, если вы полностью исключите "UTF-8"?   -  person Giacomo1968    schedule 30.11.2013
comment
@JakeGould вообще не кодирует после исключения, выдает странные буквы.   -  person R R    schedule 30.11.2013
comment
Тогда какая функция или класс использует SetEncodedHeader()? Это не стандартный PHP.   -  person Giacomo1968    schedule 30.11.2013
comment
я использую joomla @JakeGould   -  person R R    schedule 30.11.2013
comment
@JakeGould, ты хоть понимаешь, что происходит не так?   -  person R R    schedule 30.11.2013
comment
1. Какую версию Joomla вы используете, поскольку это не класс 1.5–2.5 или серии 3.x?   -  person Craig    schedule 01.12.2013
comment
@cppl я использую версию 1.5   -  person R R    schedule 02.12.2013
comment
Я должен был бы согласиться с @JakeGould, так как это похоже на двойное кодирование, то же самое случилось со мной некоторое время назад - проверьте источник сообщения электронной почты (который показывает вам необработанный журнал электронной почты) и поместите его в pastebin (скрыть любые адреса электронной почты): пример использования Gmail — email.about.com/od /gmailtips/ss/wt_view_source_2.htm   -  person BrownEyes    schedule 02.12.2013
comment
@Scorpion спасибо за ответ, но даже после удаления второй кодировки проблема не устранена.   -  person R R    schedule 02.12.2013
comment
Какое программное обеспечение обеспечивает чтение электронной почты, то есть почтовый ящик и список сообщений, а также отображение электронной почты? Это почтовый компонент в Joomla, или это служба веб-почты, такая как gmail, или что-то другое? Ваш вопрос не говорит об этом ясно. Кажется, вы подразумеваете, что Joomla отправляет электронное письмо.   -  person Jim DeLaHunt    schedule 03.12.2013
comment
@JimDeLaHunt это служба веб-почты, такая как gmail   -  person R R    schedule 03.12.2013
comment
Хорошо, как называется служба веб-почты? Проводили ли вы какие-либо тесты, чтобы убедиться, что эта служба веб-почты работает правильно, или это проблема? Например, отправляли ли вы электронное письмо с темой, вызывающей проблемы, от другого отправителя, например Gmail, на эту службу веб-почты? Каков результат этого теста?   -  person Jim DeLaHunt    schedule 03.12.2013
comment
я тестировал его в gmail и yahoo, но тема по-прежнему показывает неправильную кодировку.   -  person R R    schedule 03.12.2013


Ответы (4)


Ваш код верен абсолютно, в нем нет ошибки, но другие его ошибки не кодируются. Поскольку мне нужны заголовки источника сообщения и сообщение, чтобы точно сказать вам, что происходит? У меня также нет информации о том, отправляете ли вы электронное письмо в виде обычного текста или HTML. Но обычно есть две проблемы:

Отсутствует Mime-версия

Причиной неправильного отображения символа является то, что разработчики забыли описать сообщение как версию MIME. если в сообщении отсутствует заголовок «Mime-Version», которого требуют стандарты электронной почты Интернета, Webmail полностью проигнорирует заголовок «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);

Если вышеупомянутые вещи не решают проблему, попросите вас опубликовать RAW-заголовки электронной почты, так как это поможет лучше решить проблему.

person Vineet1982    schedule 08.12.2013
comment
я проверю это и дам вам знать, я принимаю это, так как пока это кажется хорошим ответом на мой вопрос. - person R R; 09.12.2013

Вы тестируете изменение кодировки с помощью .htaccess?

AddDefaultCharset   UTF-8
person ColoO    schedule 02.12.2013
comment
Вы проверили мой ответ Ришаб Радж? - person ColoO; 03.12.2013
comment
хм... можете сделать один тест: $subject = utf8_decode(Uw contact met Meeùs); - person ColoO; 04.12.2013
comment
содержимое вашей почты находится в вашем sql? Вы анализировали заголовок своей почты в Gmail? - person ColoO; 05.12.2013
comment
да, содержимое извлекается из sql, и я проанализировал свою почту в gmail, а также в других - person R R; 09.12.2013

Поскольку в комментариях вы указываете, что используете Joomla 1.5, кажется, что в этой версии есть проблема с библиотекой phpmailer(), которая заставляет набор символов почтовой программы — в сообщении — отправлять вещи с использованием настройки набора символов iso-8559-1. Чтобы исправить это, откройте основную библиотеку phpmailer() здесь:

[путь к вашей установке Joomla]/libraries/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';
person Giacomo1968    schedule 02.12.2013
comment
я обязательно попробую завтра и буду держать вас в курсе, спасибо за ваше время - person R R; 02.12.2013

Я предлагаю вам использовать класс почтовой программы joomla, он может выглядеть так:

$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.

person di3sel    schedule 04.12.2013