当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?)。请停下来!
答案 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,这应该是它的方式。 您可以尝试查看邮件标题以确认此理论。