2016-11-27 8 views
5

私は多分簡単な問題を抱えていますが、それがなぜうまくいかないのか分かりません。私は研究していて、多くの例を試しました。チュートリアルではこれが解決策だと説明していますが、私の場合はうまくいきません。私が受け取った電子メールの件名に「ÄÖÜßü」の文字が正しく表示されていません。ドイツの手紙を使ったPHPメールの件名

$headers = array(); 
$headers[] = "MIME-Version: 1.0"; 
$headers[] = "Content-type: text/html; charset=utf-8"; 
$headers[] = "From: {$emailfrom}"; 

$to = "[email protected]"; 
$subject = 'Betreff mit Ä, Ö und Ü ß ü'; 
$subject = '=?UTF-8?B?'.base64_encode($subject).'?='; 


$txt = "Hallo Sie haben das gewählt, am ä "; 
mail($to,$subject,$txt,implode("\r\n",$headers)); 

通常、彼らはなぜ、これが解決策ですが、私の場合には、それは動作しません別のチュートリアルではどこにでも書くのか?私の場合、月と何か関係があるのでしょうか?笑;)

+0

に応じた文字セットを使用しているUTF使用され、quoted_printable_encodeを試してみてください? http://php.net/manual/en/function.quoted-printable-encode.php – Zmart

答えて

5

あなたが必要なときにそれは(人間が読める)quoted-printable形式にエンコードの世話をしますmb_encode_mimeheader

mb_internal_encoding("UTF-8"); 
$subject = mb_encode_mimeheader($subject,'UTF-8','Q'); 

を使用する必要があります。あなたの問題を解決するはずです。

+0

あなたは素晴らしいです、それは問題をsloveしています。いくつかの人々の知識を尊重する。 – UserNameHere

+0

ありがとうございました。 – Faisal

1

base64でする必要はありませんあなたの件名をエンコード...ただ、以下の罰金に動作します:

<?php 

$emailfrom = 'Some Name <[email protected]>'; 

$headers = array(); 
$headers[] = "MIME-Version: 1.0"; 
$headers[] = "Content-type: text/html; charset=utf-8"; 
$headers[] = "From: $emailfrom"; 

$to = "[email protected]"; 
$subject = 'Betreff mit Ä, Ö und Ü ß ü'; 
$txt = "Hallo Sie haben das gewählt, am &#xE4; "; 

mail($to, $subject, $txt, implode("\r\n", $headers)); 

EDIT: Gmailはで上記のコードを実行時に表示されるヘッダの一部Gmailアドレス:あなたは同じ間違った出力手段を持っている場合は

Subject: Betreff mit Ä, Ö und Ü ß ü 
X-PHP-Originating-Script: 1000:test.php 
MIME-Version: 1.0 
Content-type: text/html; charset=utf-8 

Hallo Sie haben das gewählt, am &#xE4; 
+0

あなたの例が同じように見えることは間違いありません。ここには画像があります:https://s22.postimg.org /rwxdtjje9/mail.pngそれはいつもこのように見える - > Betreff mit 、 und – UserNameHere

+0

私はあなたの編集情報の意味を理解していませんが、doesent仕事、私は理解していない、おそらく私は無料のWebホスティングプロバイダ? – UserNameHere

+0

メールクライアントがヘッダーで指定した文字セットを尊重していないように見えます。私の例を使用している場合は、きちんとUTF-8でエンコードされた文字列で電子メールを送信します。あなたの主題が複数のメールクライアントで悪く見えるかどうかを確認してください... – 1sloc

-1
Try this 
$headers = array(); 
$headers[] = "MIME-Version: 1.0"; 
$headers[] = "Content-type: text/html; charset=utf-8"; 
$headers[] = "From: {$emailfrom}"; 

$to = "[email protected]"; 
$subject = 'Betreff mit Ä, Ö und Ü ß ü'; 
$subject = str_replace(""); 
$subjects = '=?UTF-8?B?'.$subject.'?='; 


$txt = "Hallo Sie haben das gewählt, am &#xE4; "; 
mail($to,$subjects,$txt,implode("\r\n",$headers)); 

は(のiconvを参照してください)PHPでそれができますあなたの問題の解決策..すべての最高の仲間..

+0

ありがとう、しかしあなたの例は間違って見える、それは私に正しい文字を表示されません:画像:https://s22.postimg.org/rwxdtjj9/mail.pngいつもこのように見える - > Betreff mit 、 und この問題は他の場所から来るかもしれません – UserNameHere

1

エンコードを1つ選択し、そのエンコードを使用してHTMLファイルを保存し、少なくとも1つの方法でエンコードを宣言する必要があります。使用するエンコードに関しては、ドイツ人は通常ISO/IEC 8859-15を使用しますが、UTF-8はあらゆる種類の非ASCII文字を同時に処理できる良い選択肢です。

まず道をそれが8

$headers.="MIME-Version: 1.0\r\nContent-type: text/plain; charset=UTF-8\r\n"; 

第二の方法は、ドイツ語の代わりにBASE64_ENCODEの

$headers.= "MIME-Version: 1.0\r\nContent-Type: text/html; charset=ISO/IEC 8859-15\r\n"; 
関連する問題