Apple Mail不显示使用Zend_Mail发送的PDF



我的web应用程序使用Zend_Pdf创建PDF文档,并使用Zend_Mail发送它们。它还附加了一些用户上传的文档(也是PDF)。这些附件可以在所有常用的邮件程序中显示,除了Apple mail。创建的PDF大约30 KB,消息通过外部邮件服务器发送。

在Apple Mail中,邮件列表显示带有回形针的邮件(表示邮件有附件),但是当邮件被打开时,没有附件可见。当我点击消息头中的"Details"时,它会显示附件和保存附件的选项。

这是发送电子邮件的代码:

<?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的邮件中?现在有些人回答说"没有附件"。苹果是否做了一些"智能"的事情来隐藏/显示附件?或者我应该使用另一个内容处理等等?我已经寻找了相当长的一段时间来找到一个解决方案,但我用尽了线索。

这不是Zend的问题而是Apple Mail的问题。安装雷鸟;-)

这里有一些提示:

    如果您同时发送内联文件和附件,可能会出现这样的问题
  • 邮件应用设置默认为内联附件

    1. 关闭邮件
    2. 打开终端
    3. 输入命令defaults write com.apple.mail DisableInlineAttachmentViewing -bool yes
    4. 打开邮件再试一次
  • 你不应该在设置正文中明确指定编码,你的邮件是用默认的'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();

Alex给出的答案确实是解决方案:一个Apple Mail的问题。当附件大小增加时,它会显示在电子邮件中。例如:我刚刚发送了一个更大的PDF文档(79KB,在消息列表中显示为112KB),并且是可见的。如果我发送相同类型的PDF(但更小),它是隐藏的

最新更新