2012-04-16 2 views
1

PHPのメールを使用して£を含むメールを送信すると、Outlookの/ hotmailに£が表示されます。 Gmail/thunderbirdではうまくいきます。PHPは電子メールの件名を送信しました - Hotmail/Outlookは£を表示します。

どのように私はこれを修正できますか?

+3

の結果を持っていましたか? – jimw

+2

これはUTFの問題です。他の文字セットを使用している文書にUTF-8文字を埋め込んでいます。 –

答えて

3

を使用しています。 Content-Typeヘッダーにアプリケーションが設定したものは、電子メールの本文にのみ適用され、ヘッダーには適用されません。のように(

  • 件名あなたの国際ヘッダ行がMIMEエンコードされるべき異なる符号化を使用するために

  • から
  • は、通常、これは次のヘッダーに影響しますRFC 2047)を使用して、base64(B)または修正されたquoted-printable(Q)の2つの方法のいずれかを使用します。

    • iconv_mime_encode() - MIMEヘッダフィールドを作成する
    • :これは困難に見えるかもしれませんが、すべての魔法を行うPHPでの1つの非常に便利なヘルパー関数がある

      Subject: =?ISO-8859-1?Q?Pr=FCfung_f=FCr?= Entwerfen von einer MIME kopfzeile 
      

      :エンコードされた被験者は、通常、次のようになりますまた

    あなたは下の議論に見えることがあります。

    • quoted_printable_encode() - あなたは長い行が一定の長さで分割する必要があることを考慮に入れるニートとスペースがアンダースコアで交換する必要が直接quoted_printable_encode()を使用する前に_」quoted-printableの文字列

    に8ビット文字列に変換"

  • 0

    ちょうど今日、私が代わりにPHPの組み込みmailphpmailerを使用して、同様の主題エンコードの問題を修正:

    $mail = new PHPMailer(true); 
    $mail->IsSMTP(); 
    $mail->CharSet = "utf8"; 
    $mail->Subject = $mail->EncodeHeader("You won £10000000!"); 
    .... 
    $retval = $mail->Send(); 
    
    0

    メールでUTF-8エンコーディングを使用してみてください。

    1

    通常私はこの問題は、クライアントが被写体をエンコードするために使用されているものエンコーディングを知らない、あるmb_convert_encoding()機能

    mb_convert_encoding($string, "UTF-8"); //AUTO DETECT AND CONVERT 
    mb_convert_encoding($string, "UTF-8", "latin1"); //MANUAL SET - CHANGE latin1 TO CURRENT ENCODING 
    
    0

    これは、あなたがこのテキストにどのような文字エンコーディングを使用している私の

    <?php $subject = "=?UTF-8?B?" . base64_encode($subject) . "?="; ?> 
    
    関連する問題