繁体   English   中英

打开邮件时Joomla UTF-8编码失败

[英]Joomla UTF-8 encoding fails on opening the mail

我对编码有一个奇怪的问题,描述如下:

ù现在在电子邮件主题中显示为ù 电子邮件通过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");

在localhost中它正常工作,但在Web服务器中它无法正常工作。 在webserver中,默认情况下编码也设置为utf-8。

我做错了什么? 提前致谢。

你的代码是正确的绝对没有错误,但其他东西没有编码。 因为我需要消息源头和消息来告诉你究竟发生了什么? 我还没有关于您是以纯文本还是HTML格式发送电子邮件的信息。 但通常有两个问题是:

缺少Mime版本

错误显示字符的原因是开发人员忘记将消息描述为MIME版本。 如果邮件缺少Internet邮件标准所要求的“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标题,因为它有助于更​​好地解决问题。

您是否正在测试使用.htaccess更改字符集?

AddDefaultCharset   UTF-8

由于您在评论中指出您正在使用Joomla 1.5,似乎该版本中的phpmailer()库存在一个问题,它强制邮件的字符集 - 在邮件上 - 使用字符集设置发送内容iso-8559-1 要修复此问题,请在此处打开核心phpmailer() libary:

[你的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围绕第63行进行$Encoding 。默认设置似乎是8bit ,但我不得不在过去调整为quoted-printablebase64来解决我在工作的特定设置上的一些邮件问题上。

  /**
   * Sets the Encoding of the message. Options for this are "8bit",
   * "7bit", "binary", "base64", and "quoted-printable".
   * @var string
   */
  var $Encoding          = '8bit';

我建议你使用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,我没有看到任何不使用它的理由。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM