我的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中的邮件中是否有附件显示的方式?现在有些人回答'没有附件'。 Apple会做一些“智能”的东西来隐藏/显示附件吗?或者我应该使用其他内容处理等?我已经搜索了很长时间才找到解决方案,但是线索已经用完了。
答案 0 :(得分:1)
这不是Zend问题,而是Apple Mail问题。安装Thunderbird; - )
以下是一些提示:
邮件应用设置默认为内联附件
defaults write com.apple.mail DisableInlineAttachmentViewing -bool yes
,您不应该在设置正文中明确指定编码,您的邮件使用默认的'UTF-8'编码进行初始化
尝试将文件内联并
$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();