1

PHPのmail-functionを使ってメールを送りたい。「FROM」-ヘッダーの一部には、スペースを含む名前を含める必要があります

 name with space <mail@server.tld>

残念ながら、一部のメールクライアントはスペースを処理できません。そのため、たとえばThunderbirdは名前に引用符を追加します。

 "name with space" <mail@server.tld>

ÄÖÜのような特殊文字を追加するまでは、エンコードする必要があるため、これは問題なく機能します。以下は機能しません:

 "name with ÄÖÜ and space" <mail@server.tld>

だから私はその機能を試しましたmb_encode_mimeheader

echo mb_encode_mimeheader("name with"." ÄÖÜ"." and space", "ISO-8859-1", "Q");
# result:
# name with =?ISO-8859-1?Q?=C3=84=C3=96=C3=9C=20and=20space?=

特殊文字が最初に出現する前は、スペースがまだ文字列内にあるため、これはまだ機能しません。正しい結果は次のようになります。

=?ISO-8859-1?Q?name=20with=20=C3=84=C3=96=C3=9C=20and=20space?=

これを処理できるPHPの関数はありますか?または、引用符と「mb_encode_mimeheader」を組み合わせて使用​​する必要がありますか?または、メールヘッダーのスペースを処理する別の方法はありますか?正直なところ、RFC822で言及されているさまざまな空白の意味を理解していませんでした。

4

2 に答える 2

1

IETFが言うように、電子メールはヘッダーにASCII文字のみを許可します。したがって、電子メールヘッダーをASCIIエンコードする必要があると思います。

ただし、インターネット技術特別調査委員会からの新しい仕様に見られる傾向に基づいて、ヘッダーをエンコード/デコードする必要がない可能性があることがすぐにわかります。

于 2012-08-16T04:15:44.843 に答える
1

引用符は必要ありません。RFC2047-エンコーディング(つまりmb_encode)はスペースも処理します。

(記録としては、単なるスペースはまったく問題ありません。一部のクライアントが引用符を使用する理由ではありません。引用符は、とにかく完全に冗長であることがよくあります。したがって、スペースを使用した結果は実際にはまったく正しくありません。)

于 2012-08-16T05:25:24.987 に答える