2011-10-24 20 views
3

私は、PHPスクリプトからギリシャ語で書かれた自動メールを送信しています。 私が試した:PHPからのメール送信 - 文字コード

$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/plain; charset=utf-8\r\n"; 
$headers .= "From: [email protected]\r\n"; 
$headers .= "Reply-To: [email protected]\r\n"; 
mail($to, $subject,$body, $headers) ; 

体と被写体がギリシャ語です。 Hotmailは読んでいるが、本文は読んでいないし、Gmailはそれをよく読む。私はutf-8をiso-8859-7(ギリシャ語の文字を含む)に置き換えました。 1)utf-8でうまくいかない理由は何ですか? 2)また、gmailは私のサーバーをメールに書き込んでいます..どうしてこれが起こるのを防ぐことができますか?

+1

本文はどこから来ますか?それはUTF-8ですか? – JJJ

+3

自分のMIMEメッセージを作成しないでください。 [PHPMailer](http://phpmailer.worxware.com)または[Swiftmailer](http://swiftmailer.org) –

+0

体を見せてください。 $ body = "mytext"からの – middus

答えて

3

件名を含むすべての電子メールヘッダーは、純粋なASCIIである必要があります。電子メールヘッダーでUTF-8や他のエンコーディングを直接使用することはできません。一部のメールサービスでは、他のエンコーディングを検出して正しいことを行うことができますが、技術的には有効ではありません。 MIMEエンコードを使用してヘッダーをエンコードします(How to use special characters in recipients name when using PHP's mail functionを参照)。

+0

'mb_internal_encoding()'を使うときはこれも理解する必要があります。http://stackoverflow.com/questions/7501924/php-messing-with-html- charset-encoding/7502564#7502564 –