通过电子邮件发送特殊字符给Tumblr

时间:2011-06-24 14:36:52

标签: php email tumblr

我正在使用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组合,没有任何不同的结果。

欢迎任何想法。 迈克尔

1 个答案:

答案 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>');