我通过PHP从我的测试服务器发送带有中文字符的邮件,并将其完美地发送出去。编码是UTF-8。当我将相同的PHP文件上传到另一台服务器并尝试从那里发送电子邮件时,它会在一个邮件客户端(实际上是基于网络的邮件,GMail)中看起来好90%,但在另一个邮件客户端(Apple Mail)中它是所有的胡言乱语 - 即使我尝试更改邮件客户端中的编码。
我被困在这里,因为一台服务器上的一切正常,但不是另一台服务器。我不知道从哪里开始寻找解决方案。更令人费解的是,在生产服务器上,电子邮件看起来有点好(某些字符没有显示的奇怪情况),但在其他邮件应用程序中,它看起来像垃圾。
我知道在哪里可以开始寻求解决这个问题吗?
PHP
$books = json_decode ($_POST['books']);
$body = '
<body bgcolor="#999999"><center>
<table width="700" border="0" cellspacing="2" cellpadding="10" bgcolor="#FFFFFF">
<tr>
<td>
你好 ' . $_POST['name'] . ',<br/><br/>以下是你从学习网站,给孩子讲故事课程,所要求的书籍名单<br/><br/><hr noshade="noshade" />
</td>
</tr>
<tr>
<td>';
$iLen = count($books);
for ($i = 0; $i < $iLen; $i = $i + 1) {
$book = $books[$i];
$body .= '<b>' . $book->title . '</b><br/>' . $book->author . '<br/><br/>';
$body .= '简介: ' . $book->synopsis . '<br/>';
$body .= '年龄层: ' . $book->age . '<br/>';
$body .= '场景: ' . $book->setting . '<br/>';
$body .= '目的: ' . $book->purpose . '<br/>';
$body .= '索书号: ' . $book->call . '<br/><br/>';
$body .= '出版商: ' . $book->publisher . '<br/><br/><hr noshade="noshade" />';
}
$body .= '
</td>
</tr>
<tr>
<td>
亲切问侯,<br/>Name
</td>
</tr>
</table>
</center>
</body>
';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'From: Name <no-reply@here.com>' . "\r\n";
$ok = mail ($_POST['email'], '讲故事给孩子听:您所要求的故事精选书单', $body, $headers);
结果
ä∏ å¥∏ ryan,
ä»¥ä¸—æ˘¯ä∏ ä»⁄å–œä’ ç∏Œç«˙,ç»˙å–©å–∆è®”æ∑亗è¯≤稗,æ≈•èœ™æ±≠ç˚≥䒜籟å∆ŸåŸ
瑲瑲æ√Œæ˛≈å¤˚ç√±ä∏
麜å∑—å¸∞é˝·å°π, å±±å§∫
Synopsis: 粗å∂¯ç√±ç˚≥å°∂å∑‰å®ˇå®ˇæ•⁄ä’√牨å®∞ç—¬ç≈’ç˚≥戒åπ∂å‚‘å∑‰åœ√åœ√说å®∞æ˛≈å¤˚ç√±å®∞ã•≠
Age Group: 4 - 6 å”™
Setting: ç≤¤ä∏„
Purpose: ä»·å•πè§≠å‚‘ä¿∞è¿˝äº”å–∆ç˚≥æ≥ƒæ∞∑
Call no: JP MAC
Publisher: 麜å∑—å¸∞é˝·å°π, å±±å§∫. 瑲瑲æ√Œæ˛≈å¤˚ç√±ä∏ .丅海 : 尌咴å≥¿ç«¥åΩºç≈√ç¤≤, 2005.
答案 0 :(得分:0)
也许您应该以MIME格式对邮件进行编码
答案 1 :(得分:0)
php.ini中的“default_charset”值是否都是utf8?
这可能会导致您遇到的问题。看来你依靠php解释器知道脚本是用utf-8编写的,因为你在脚本中将字面上的utf-8字符传递给电子邮件,并且标题中的字符集设置为utf-8(这很好。)
答案 2 :(得分:0)
您是否使用纯文本和HTML进行多部分电子邮件?还是只有HTML? 如果是前者,则将纯文本的内容类型设置为utf-8。
如果它只是html,你可以编写一个内部指定内容类型的完整html。