我想使用 PHP 中的邮件功能发送电子邮件。标题的“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 中提到的不同空格的含义。