ホームページ  >  記事  >  バックエンド開発  >  PHP のメール機能を使用して UTF-8 でエンコードされた中国語メールを送信するときにヘッダーが文字化けする場合の解決策、_PHP チュートリアル

PHP のメール機能を使用して UTF-8 でエンコードされた中国語メールを送信するときにヘッダーが文字化けする場合の解決策、_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 09:06:551043ブラウズ

PHPのメール機能を使用してUTF-8でエンコードされた中国語メールを送信するときにタイトルが文字化けする問題の解決策

最近、PHPのメール機能を使用してUTF-8でエンコードされた中国語メールを送信すると、タイトルが文字化けするという問題に遭遇しました。メールの本文は正しいです。最初はページのエンコードの問題かと思いましたが、ページのエンコード utf-8 には問題がないことがわかり、長い間原因を探した結果、ついに問題が見つかりました。

1. PEARのメールクラスを使用する

PEAR の Mail クラスでは、レターの送信に sendmail または SMTP の使用を選択でき、このようなパッケージ化されたインターフェイスは使いやすく、自分で車輪を再発明する必要はありません。

2.ヘッダーの件名の文字化けについて

iso-8859-1 エンコーディング以外のテキストを件名に直接入れないでください。正しい方法は、件名のテキストを RFC 2047 の仕様に準拠させることです。件名のテキストのエンコードが GB2312 であると仮定します。 、その後、 正しい件名 この形式にする必要があります
$headers['件名'] = '=?GB2312?B?' .base64_encode('?=';
)
UTF-8の場合は、先頭のGB2312をUTF-8に置き換えるだけです。 MTA の差別化は非常に重要であり、ほとんどの国内 MTA は GB2312 エンコーディングをサポートできると考えられるため、タイトルでは GB2312 エンコーディングを使用することをお勧めします。

海外の MSP に送信する場合は、GB2312 エンコードをサポートしていない可能性が高いため、件名に Base64 でエンコードされた UTF-8 テキストを使用することをお勧めします。

3. ヘッダーに必ず content-type を追加してください

電子メール ヘッダーのコンテンツ タイプは Web ページのコンテンツ タイプに似ており、text/plain の形式になります。このオプションは主に電子メールを受信するクライアントにとって意味があり、一部の Web メールでは、ここでの設定に基づいて電子メールの内容がエンコードおよび変換され、正しく表示されます。 gb2312 エンコードを使用して .com.tw の電子メール アドレスに送信すると何が起こるか想像できます。

4. メールの送信に使用するホストを正しく設定します

1) ほとんどの非固定 IP は逆解決できず、一部のスパム対策戦略ではこれを判断基準として使用するため、逆解決を構成する必要があります。
2) MX 解析を設定する必要があります。理由は上記と同じです。
3) リターンパスがバウンスメールを受信できることを確認してください。そうしないと、メール送信サーバーが受信側のブラックリストに登録される可能性があります。

リーリー

最初に関数base64_encode()を使用します — MIME Base64を使用してデータをエンコードします
タイトル文字列の前にエンコード タイプを追加します。例: =?UTF-8?B?
タイトル文字列の後に追加します: ?=
例:

リーリー

こうすれば、送信される中国語メールのタイトルが文字化けすることはありません。

実際、問題を徹底的に分析すれば、すべての問題は簡単に解決されます。この記事が皆さんの学習に役立つことを願っています。

www.bkjia.com本当http://www.bkjia.com/PHPjc/1063232.html技術記事 PHPのメール機能を使用してUTF-8でエンコードされた中国語メールを送信するとヘッダーが文字化けする問題の解決策 最近、PHPのメール機能を使用してUTF-8でエンコードされた中国語メールを送信すると、タイトルが表示されるという問題が発生しました。 .
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。