PHP ile gönderilen e-postada Çince karakterler görünmüyor

3 Cevap php

Ben test sunucusuna gelen Çince karakterler ile PHP ile mail göndermek ve mükemmel dışarı gönderir. Kodlaması UTF-8'dir. Ben başka bir sunucuya aynı PHP dosya upload ve oradan e-posta göndermeye çalıştığınızda, bir posta istemcisi (web-tabanlı posta aslında, GMail)% 90 para cezası bakacağız, ama başka bir posta istemcisi (Apple Mail) bu kadar Tüm gibberish - Ben posta istemcisi kodlamasını değiştirmeyi deneyin bile.

Her şey tek bir sunucuda çalışıyor ama başka çünkü, burada sıkışıp kaldım. Ben çözüm arıyor nereden başlayacağınızı emin değilim. Ne daha şaşırtıcı bulunuyor üretim sunucusunda, e-posta (bazı karakterler garip durum gösteren değil) biraz Tamam görünüyor, ama diğer posta apps o çöp gibi görünüyor olmasıdır.

Bunu çözmek için arıyor başlayabilirsiniz herhangi bir fikir?

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

Result

ä∏ å¥∏ ryan,

ä»¥ä¸—æ˘¯ä∏ ä»⁄å–œä’ ç∏Œç«˙,ç»˙å–©å–∆è®”æ∑亗è¯≤稗,æ≈•èœ™æ±≠ç˚≥䒜籟å∆ŸåŸ

瑲瑲æ√Œæ˛≈å¤˚ç√±ä∏ 
麜å∑—å¸∞é˝·å°π, å±±å§∫ 

Synopsis: 粗å∂¯ç√±ç˚≥å°∂å∑‰å®ˇå®ˇæ•⁄ä’√牨å®∞ç—¬ç≈’ç˚≥戒åπ∂å‚‘å∑‰åœ√åœ√说å®∞æ˛≈å¤˚ç√±å®∞ã•≠
Age Group: 4 - 6 å”™
Setting: ç≤¤ä∏„
Purpose: ä»·å•πè§≠å‚‘ä¿∞è¿˝äº”å–∆ç˚≥æ≥ƒæ∞∑
Call no: JP MAC

Publisher: 麜å∑—å¸∞é˝·å°π, å±±å§∫. 瑲瑲æ√Œæ˛≈å¤˚ç√±ä∏ .丅海 : 尌咴å≥¿ç«¥åΩºç≈√ç¤≤, 2005.

3 Cevap

belki MIME formatında mesaj kodlamak gerekir

"Default_charset" değerleri php.ini utf8 hem de misiniz?

Yani görüyoruz soruna neden mümkün olabilir. Bu sizin e-posta komut dosyası değişmez utf-8 karakter olarak geçen, komut dosyası utf-8 ile yazılmış olduğunu bilmek php yorumlayıcısı güvenmek ve charset başlıklarında olan utf-8 (ayarlanır görünüyor hangi iyidir).

Is you email multi-part of with plain text and html? Or only html? If it is the former, set the content type of the plain text to utf-8 too.

Yalnız html ise, içeri belirtilen içerik türüyle tam bir html yazmak olabilir.