我的 Web 应用程序使用 Zend_Pdf 创建 PDF 文档并使用 Zend_Mail 发送它们。它还附加了一些用户上传的文档(也是 PDF)。附件显示在所有常用的邮件程序中,Apple Mail 除外。创建的 PDF 约为 30 KB,消息使用外部邮件服务器发送。
在 Apple Mail 中,消息列表显示带有回形针的消息(表示它有附件),但是当打开消息时,看不到任何附件。当我点击消息头中的“详细信息”时,它会显示附件和保存它们的选项。
这是发送电子邮件的(精简的)代码:
<?php
$mail = new Zend_Mail('utf-8');
$mail->setFrom('niels@example.com', 'Niels')
->setSubject('Subject')
->addTo('niels@example.com', 'Niels')
->setBodyHtml('Hi there', 'utf-8', Zend_Mime::ENCODING_8BIT);
$a = new Zend_Mime_Part($pdfContent);
$a->type = 'application/pdf';
$a->filename = 'my_pdf.pdf';
$a->disposition = Zend_Mime::DISPOSITION_ATTACHMENT;
$a->encoding = Zend_Mime::ENCODING_BASE64;
$mail->addAttachment($a);
$mail->setHeaderEncoding(Zend_Mime::ENCODING_BASE64);
$mail->send();
我收到的邮件具有以下邮件标题
Content-Type: multipart/mixed; boundary="=_f6a669390c6713f60a851af814fe897f"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit
MIME-Version: 1.0
HTML邮件内容:
--=_f6a669390c6713f60a851af814fe897f
Content-Type: text/html; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
附件内容:
--=_f6a669390c6713f60a851af814fe897f
Content-Type: application/pdf
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="my_pdf.pdf"
有没有办法让附件显示在 Apple Mail 的邮件中?现在有的人说没有执着。苹果会做一些“聪明”的事情来隐藏/显示附件吗?或者我应该使用另一个 Content-Disposition 等?我已经搜索了很长时间来找到解决方案,但我的线索已经用完了。
最佳答案
这不是 Zend 问题,而是 Apple Mail 问题。安装雷鸟 ;-)
这里有一些提示:
- 如果您同时发送内联文件和附件,就会出现这样的问题
邮件应用程序设置默认为内联附件
- 关闭邮件
- 打开终端
- 输入命令
defaults write com.apple.mail DisableInlineAttachmentViewing -bool yes
, - 打开邮件并重试
您不应该在设置正文中明确指定编码,您的邮件已按照您的方式使用默认的“UTF-8”编码进行初始化
- 除非您使用不使用基于罗马字母的字符集的语言发送电子邮件,否则您不应该对 header 进行编码
尝试附加内嵌文件
$mail = new Zend_Mail('utf-8');
$mail->setFrom('niels@example.com', 'Niels')
->setSubject('Subject')
->addTo('niels@example.com', 'Niels')
->setBodyHtml('Hi there');
// add attachment
$mail->createAttachment(file_get_contents('my_pdf.pdf'), 'application/pdf', Zend_Mime::DISPOSITION_ATTACHMENT , Zend_Mime::ENCODING_BASE64);
// try sending attachment inline... maybe this will work (not sure if supported by all mail clients)
// $mail->createAttachment(file_get_contents('my_pdf.pdf'), 'application/pdf', Zend_Mime::DISPOSITION_INLINE , Zend_Mime::ENCODING_BASE64);
$mail->send();
关于php - Apple Mail 不显示使用 Zend_Mail 发送的 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14254719/