根据 api 文档ActionMailer::基础 http://api.rubyonrails.org/classes/ActionMailer/Base.html,如果使用多个模板类型,则所有模板类型都会被渲染,并且 mime-type 会自动设置为 multipart/alternative。
如果添加附件,附件将放置在多部分/混合容器内。
第一个问题:您是否渲染其他类型,例如文本和html?我不建议发送仅包含 pdf 部分的电子邮件。即使文本和 html 部分只是指示收件人打开附件,它们也应该在那里。理想情况下,text/html 部分会有更多信息。
其次,您是否尝试以内联方式查看 pdf,而不是作为附件?
您能否查看电子邮件的原始来源并使用您看到的结构更新您的帖子?标头中将设置一个初始 mime 类型。它看起来像这样:
Mime-Version: 1.0
Content-Type: multipart/mixed;
boundary="--==_mimepart_50596418be947_c7223fec9d834d3874256";
charset=UTF-8
Content-Transfer-Encoding: 7bit
这表示接下来的部分不是相同信息的替代版本,而是指示电子邮件客户端清楚地显示它们。
稍后在电子邮件中,您的文本和 html 部分应采用以下内容:
----==_mimepart_50596418be947_c7223fec9d834d3874256
Date: Wed, 19 Sep 2012 06:20:12 +0000
Mime-Version: 1.0
Content-Type: multipart/alternative;
boundary="--==_mimepart_50596418be468_c7223fec9d834d38741a5";
charset=UTF-8
Content-Transfer-Encoding: 7bit
最后,编码的 pdf 部分应该有一个 mime 标头,例如:
----==_mimepart_50596418be947_c7223fec9d834d3874256
Date: Wed, 19 Sep 2012 06:20:12 +0000
Mime-Version: 1.0
Content-Type: application/pdf;
charset=UTF-8;
filename=terms.pdf
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename=terms.pdf
通过我刚刚发送给自己的简单测试电子邮件,其中包含文本、html 部分和大型 pdf,我可以在 iPhone 上查看该电子邮件。它显示了 html 部分和一个让我下载 pdf 的图标。