[英]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版本。 如果邮件缺少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-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 = 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.