如果发件人标头包含斯堪的纳维亚字符,Pear Mail 将不会发送

发布于 2024-11-04 08:49:11 字数 592 浏览 0 评论 0原文

想象一下:

$from = "Testäöå <[email protected]>";
....
$headers = array ('From' => $from,
    'To' => $to,
    'Subject' => $subject,
    'MIME-Version' => "1.0",
    'Content-type' => "text/html; charset=iso-8859-1");

如果 $from 变量只是 "Test <[email  protected]>",脚本工作正常。

Imagine the following:

$from = "Testäöå <[email protected]>";
....
$headers = array ('From' => $from,
    'To' => $to,
    'Subject' => $subject,
    'MIME-Version' => "1.0",
    'Content-type' => "text/html; charset=iso-8859-1");

If the $from variable is just "Test <[email protected]>", script works fine.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

拥抱没勇气 2024-11-11 08:49:12

由于您直接指定标头,因此需要手动转义它们。标头中只允许使用 ASCII 字符,因此您需要对它们进行转义。

您可以这样做,即使用

'=?UTF-8?B?'.base64_encode($from).'?='

或者,您可以使用多字节字符串函数,如 http://pear.php.net/manual/en/package.mail.mail.send.php

$encodedFrom = mb_encode_mimeheader($from, 'UTF-8', 'Q');

Since you're specifying the headers directly, you need to escape them manually. Only ASCII characters are allowed in headers, so you need to escape them.

You can do that i.e. with

'=?UTF-8?B?'.base64_encode($from).'?='

Alternatively, you can use the Multibyte string functions as described in the comments of http://pear.php.net/manual/en/package.mail.mail.send.php :

$encodedFrom = mb_encode_mimeheader($from, 'UTF-8', 'Q');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文