2011-06-24 19 views
0

私はTumblrとPosterousに投稿を電子メールで送信するためにPHPスクリプトを使用しています。 Posterousの特殊文字は投稿に表示されていますが、Tumblrでは表示されません。 (一般的に、Tumblrは特殊文字をサポートしています - Gmailからのメールで試してみました) 何が問題なのですか?Tumblrに特殊文字を含むメール

ここに私の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-転送エンコードの組み合わせを試してみました。

アイデアを歓迎します。 マイケル

+0

あなた自身からの電子メールを送信しようと試みたことがありますGmailを開いてヘッダーを検査しますか? – Manhim

+1

自分のMIMEメッセージを作成しないでください。 Swiftmailer(http://swiftmailer.org)またはPHPMailer(http://phpmailer.worxware.com)を使用してください。自分のものを転がすよりもはるかに信頼性と使いやすさ。 –

+1

送信しようとしている特殊文字は何ですか? – Arvin

答えて

0

私は自分のGmailアカウントがそれを送信し、それは(これは他のGmailアカウントを使用している場合ではないかもしれない)文字セットのためにwindows-1252を使用して、テキストをbase64でエンコードされていどのように見えました。以下に送った電子メールはtumblrによって正常に掲示されました。私は関数utf8_decodeを使って正しいbase64文字列を生成しました。

$data = wordwrap(base64_encode(utf8_decode($stringWithSpecialCharacters))); 

生の電子メールメッセージは以下の通りです:

To: [email protected] 
Subject: tumblr post from sudocode 
from: omime class <[email protected]> 
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('[email protected]', 'test tumblr post', 'from: omime class <[email protected]>'); 
+0

"GMailがどのように送信したのか調べ、それがcharsetにwindows-1252を使用していることが判明しました" - gmailはおそらくあなたのクライアントが使用する文字セットを尊重します。非Windows OSでは、おそらくWindows-1252になることはありません。一見すると、私のubuntuデスクトップで作った電子メールはUTF-8と思われます。 –

+0

@Frank私はそれが動作するように送信する必要があることを意味しているわけではありません。私はちょうど私のために働いた事例の例を挙げています。私の答えに含まれている生の電子メールは、私自身のコードから生成したものです。確かに、私が言ったことを言い換えるつもりです。 – Arvin

+0

ありがとう!デコードが必要でした。 – Michael

関連する問題