我正在为我的某个应用程序实施多语言支持。在那我试图使用PHP Pear :: Mail&发送多语言邮件。 Pear :: Mail_Mime包。
以下是我的邮件发送功能。
function _send($to, $subject, $content){
$smtp_details = $this->settings->getSMTPDetails();
$host = $smtp_details['smtp_host'];
$port = $smtp_details['smtp_port'];
$username = $smtp_details['smtp_username'];
$password = $smtp_details['smtp_password'];
$from_address = $smtp_details['smtp_email'];
/*
* Decode the Unicode string and encrypt the string
*/
$subject = base64_encode($subject);
$content = base64_encode($content);
if ($this->settings->getLanguage() != LANGUAGE_ENGLISH){
$subject = '=?UTF-8?B?'.$subject.'?=';
}
$headers = array ('From' => $from_address,
'To' => $to,
'Subject' => $subject,
'Content-Type' => 'text/html; multipart/related; boundary=DeS-mixed-{$_boundary}; charset=UTF-8\n',
'Content-Transfer-Encoding' => 'BASE64',
'MIME-Version' => '1.0' );
// Creating the Mime message
$mime = new Mail_mime("\n");
// Setting the body of the email
$mime->setHTMLBody($content);
$body = $mime->get();
//$header = $mime->headers($headers);
$smtp = Mail::factory('smtp',array ('host' => $host,
'port' => $port,
'auth' => true,
'username' => $username,
'password' => $password));
$connectionCount = 0;
do {
$mail = $smtp->send($to, $headers, $body);
$connectionCount++;
if (PEAR::isError($mail) && $connectionCount < 3) {
//echo 'Retrying to send email using Host:'.$host;
sleep(1);
} else {
if (PEAR::isError($mail)){
throw new Exception('Mail sending error: '.$mail->getMessage());
}else{
return true;
}
}
}while (1);
}
,调用函数为:
echo $this->_send($to, json_decode("\u0B9A\u0BC7\u0BBE\u0BA4\u0BA9\u0BC8 \u0BAE\u0BBF\u0BA9\u0BCD\u0BA9\u0B9E\u0BCD\u0B9A\u0BB2\u0BCD"), json_decode("\u0B87\u0BA4\u0BC1 \u0B92\u0BB0\u0BC1 \u0B9A\u0BC7\u0BBE\u0BA4\u0BA9\u0BC8 \u0BAE\u0BBF\u0BA9\u0BCD\u0BA9\u0B9E\u0BCD\u0B9A\u0BB2\u0BCD"));
注意:电子邮件内容是Unicode JavaScript Escape字符串。
预期输出:
Subject: சோதனை மின்னஞ்சல்
Body: இது ஒரு சோதனை மின்னஞ்சல்
我得到的实际输出:
Subject: சோதனை மின்னஞ்சல்
Body: இந்த ஒரு சோதனை மின்�®
我的收件箱中的电子邮件正文内容受到限制。我是否错过任何标头配置?任何人都面临同样的问题请分享您的解决方案
提前致谢。
答案 0 :(得分:0)
您是从数据库获取数据吗?你需要为电子邮件和数据库发送utf-8编码 你之前选择任何数据
mysql_query(“set character_set_client ='utf8'”); mysql_query(“set character_set_results ='utf8'”);
mysql_query(“set collation_connection ='utf8_general_ci'”);