外国字符+逗号的Zend Mail问题

时间:2009-11-17 09:08:50

标签: php email zend-framework sendmail

当to name设置为同时包含外来字符(如“å”)和逗号(“,”)的内容时,Zend Mail会抛出异常(因为mail()返回false)。使用以下代码重新制作。

$mail = new Zend_Mail('utf-8');
$mail
    ->setFrom('info@myhost', 'My company')
    ->setSubject('hi')
    ->addTo('MYEMAIL@SOMEHOST.COM', 'aå,a')
    ->setBodyHtml('<p>asd</p>')
    ->send();

如果我将addTo调用更改为以下内容,则不会发生错误。

->addTo('znarkus@gmail.com', 'aåa')
->addTo('znarkus@gmail.com', 'a,a')
->addTo('znarkus@gmail.com', 'aa')

奇怪的是,即使它抛出异常(“无法发送邮件”),邮件也会传递。我正在运行最新的Zend Mail(1.9.5?)。请停下来!

3 个答案:

答案 0 :(得分:1)

这只是Zend_Framework中的一个错误:

http://framework.zend.com/issues/browse/ZF-10792

电子邮件的名称部分允许使用逗号:

“史密斯,弗兰克”

这没关系

答案 1 :(得分:0)

问题是$(接受

的mail()函数
User <user@example.com>, Another User <anotheruser@example.com>

我想PHP内部会在逗号上拆分字符串以分隔多个收件人,但是您只提供一个电子邮件地址。

如果您认为这是Zend_Mail或PHP错误,则应将其发布到相应的问题跟踪器。

答案 2 :(得分:0)

逗号是邮件标题“to”部分中的保留文字(尽管你不应该使用它),分隔不同的目标。即使你的“第一个”邮件被发送,imho也会创建一个这样的标题:

aå, a <znarkus@gmail.com>

有了这个标题,我假设你的mta试图发送两封邮件:一封到aå,失败(严重),第二封到znarkus@gmail.com,这应该是它的方式。 您可以尝试查看邮件标题以确认此理论。