【问题标题】:Unable to send attachments with Zend Framework to Gmail and Lotus Notes无法使用 Zend Framework 将附件发送到 Gmail 和 Lotus Notes
【发布时间】:2010-11-09 19:09:21
【问题描述】:

我正在尝试通过 Zend Framework 的 (1.10.7) 邮件库发送文件。

$mail = new Zend_Mail();
$mail->setSubject('Test');
$mail->setFrom('hello@ex.com');
$mail->setBodyText ( "" );

$at = $mail->createAttachment($txtFile->toString(), 
                                'text/plain', 
                                Zend_Mime::DISPOSITION_ATTACHMENT, 
                                Zend_Mime::ENCODING_8BIT);
$mail->addTo ( "hi@you.com" );                              
$mail->send();

该文件是一个简单的文本文件。 它适用于 Outllok,我收到了正确的附件,但不适用于 Gmail 和 Lotus Notes。

在 Gmail 中,我收到了这条消息:

这是 Mime 格式的消息。如果你看到这个,你的邮件阅读器不支持这种格式。

Lotus Notes 是这样说的:

此项目的 MIME 内容存储在附件 $RFC822.eml 中。解析 MIME 内容失败:MIME 数据格式不正确..

Zend 的邮件附件有什么问题?

【问题讨论】:

    标签: php zend-framework


    【解决方案1】:

    docs 表示第一个参数应该是正在发送的二进制数据字符串。

    部分cmets建议使用file_get_contents()发送图片,这当然会返回一个字符串,但它是代表图片的二进制数据字符串。

    您的toString() 方法为$txtFile 返回什么?像

    这样的简单字符串
    return "This is some plain text"; 
    

    还是返回二进制数据?

    您可能想尝试创建一个包含一些内容的纯文本文件,然后在该文件上使用file_get_contents(),并使用返回值作为发送附件的第一个参数,而不是仅仅发送一个纯字符串。

    希望对您有所帮助。

    【讨论】:

    • $txtFile->toString() 返回一个字符串,它适用于 Outlook。我在 Outlook 中附加了一个文件。
    • 不管怎样,你试过我的file_get_contents方法了吗? Outlook 是 Microsoft,这使它成为一种特殊情况,这使它成为一个糟糕的测试/基准。请记住,Outlook 中的笑脸是所有其他邮件客户端上的 J。有了这种行为,您可以向它发送任何东西,它可能会接受/呈现它!
    • 我与 file_get_contents 的结果相同
    【解决方案2】:

    显然是我们的反垃圾邮件软件弄乱了电子邮件的标题(在输出中)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多