Электронная почта со специальными символами на Tumblr - PullRequest
0 голосов
/ 24 июня 2011

Я использую 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 без какого-либо другого результата.

Любые идеи приветствуются.Michael

1 Ответ

0 голосов
/ 24 июня 2011

Я посмотрел, как моя учетная запись GMail отправила его, и обнаружил, что он использует windows-1252 для кодировки, а текст закодирован в 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 класс для отправки электронного письма, и вот код, который я использовал:

$email = new omime('alternative');
$email->attachText('ßÄÖùâêîôûëÿæœÙÂÊÎ');
$email->attachHTML('ßÄÖùâêîôûëÿæœÙÂÊÎ');

$email->send('mysecretuploademail@tumblr.com', 'test tumblr post', 'from: omime class <script@sudocode.net>');
...