我正在使用PHP脚本将帖子通过电子邮件发送给Tumblr和Posterous。对于Posterous特殊字符显示在帖子中,但对于Tumblr它没有。 (一般来说Tumblr确实支持特殊字符 - 我通过Gmail发送电子邮件尝试了它) 那可能是什么问题呢?
这是我的PHP标题:
$headers .= "MIME-Version: 1.0\r\n"
."Content-Type: multipart/alternative; boundary=\"PHP-mixed-$bound_text\"\r\n";
$message = "--PHP-mixed-$bound_text\r\n"
."Content-Type: multipart/related; type=\"text/html\"; boundary=PHP-mixed2-$bound_text\r\n\r\n"
."--PHP-mixed2-$bound_text\r\n"
."Content-Type: text/html; charset=\"utf-8\"\r\n"
."Content-Transfer-Encoding: 7bit\r\n\r\n";
我已经尝试了几个字符集和Content-Transfer-Encoding组合,没有任何不同的结果。
欢迎任何想法。 迈克尔
答案 0 :(得分:0)
我查看了我的GMail帐户是如何发送它的,并发现它使用windows-1252
用于charset,文本是base64编码的(这可能不是使用其他GMail帐户的情况)。我在下面发送的电子邮件由tumblr成功发布,我使用函数utf8_decode生成正确的base64字符串。
$data = wordwrap(base64_encode(utf8_decode($stringWithSpecialCharacters)));
原始电子邮件如下:
To: myuploademail@tumblr.com
Subject: tumblr post from sudocode
from: omime class <script@sudocode.net>
MIME-Version: 1.0
Content-type: multipart/alternative;
boundary=omime_1308940625_c0d4e36fd504619028804e8b23ceb12a
--omime_1308940625_c0d4e36fd504619028804e8b23ceb12a
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: base64
38TW+eLq7vT76//mP9nCys4=
--omime_1308940625_c0d4e36fd504619028804e8b23ceb12a
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: base64
38TW+eLq7vT76//mP9nCys4=
--omime_1308940625_c0d4e36fd504619028804e8b23ceb12a--
我使用omime class发送电子邮件,这是我使用的代码:
$email = new omime('alternative');
$email->attachText('ßÄÖùâêîôûëÿæœÙÂÊÎ');
$email->attachHTML('ßÄÖùâêîôûëÿæœÙÂÊÎ');
$email->send('mysecretuploademail@tumblr.com', 'test tumblr post', 'from: omime class <script@sudocode.net>');