【问题标题】:Zend Mail problem with foreign char + commaZend Mail 的外文字符 + 逗号问题
【发布时间】:2009-11-17 09:08:49
【问题描述】:

当收件人名称设置为同时包含外来字符(如“å”)和逗号(“,”)时,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?)。请停下来!

【问题讨论】:

    标签: php email zend-framework sendmail


    【解决方案1】:

    这只是 Zend_Framework 中的一个错误:

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

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

    “史密斯,弗兰克”

    没关系

    【讨论】:

      【解决方案2】:

      问题是 $to 的 mail() 函数接受

      User <user@example.com>, Another User <anotheruser@example.com>
      

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

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

      【讨论】:

        【解决方案3】:

        逗号是邮件头的“收件人”部分中的保留文字(但您永远不应该使用它),用于分隔不同的目标。即使您的“第一封”邮件被发送,恕我直言,它会创建一个像这样的标题:

        aå, a <znarkus@gmail.com>
        

        使用此标头,我假设您的 mta 尝试发送两封邮件:一封发送给 aå,但失败(严重),另一封发送给 znarkus@gmail.com,它应该会成功。 您可以尝试查看邮件标题来证实这一理论。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-10-01
          • 1970-01-01
          • 2013-04-20
          • 1970-01-01
          • 2019-08-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多