我有一个邮件是如下:
class Payments::LateNoticesMailer < AsyncMailer
def notice(payment_id)
@payment = PaymentDecorator.find(payment_id)
@invoice = @payment.invoice
template = "payments/invoices/#{@payment.made_with_type.downcase}/show"
attachments["#{@payment.invoice_filename}.pdf"] =
WickedPdf.new.pdf_from_string( render_to_string( pdf: @payment.invoice_filename,
formats: [:pdf],
template: template,
layout: "layouts/pdf.html"))
mail to: @payment.payer_email,
from: '"RentingSmart" <no-reply@rentingsmart.com>',
cc: @payment.landlord_email,
subject: "*** Your rent payment of #{@payment.amount_due} is overdue ***"
end
end
我发送邮件使用SendGrid。 这里是我的问题,如果我通过Gmail打开电子邮件时,一切都很正常,电子邮件的文本是存在的,并且连接附件。 不过,如果我打开它使用OSX的Mail.app或在我的iPhone,我只是得到了以下几点:
这是MIME格式的多部分消息...
任何人有什么秘诀? 我想,我下面Rails的正确引导。
这里是我打这个电话Payments::LateNoticesMailer.notice(payment.id).deliver
根据API文档的ActionMailer ::基地 ,如果使用多个模板类型,所有的人都提供,而该mime类型被自动设置为multipart /替代。
如果添加附件时,附件被放置在多部分/混合容器的内部。
第一个问题:你是渲染其他类型,比如文本和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格式的图标。
某些电子邮件客户端可能需要一个电子邮件,以便正确地显示它有一个纯文本的一部分。
我刚遇到了这个消息,同时从2.3转换Rails应用至3.2。 我想我正确地转换我的邮件,但旧版本规定content_type: "multipart/mixed"
的选项。 然而,当我删除,我收到的附件和HTML和纯文本正确呈现。 我认为有在那里压倒一切的Rails该设置确实把不同类型的内容,这是不是我想要的东西。 由于原来的答案带领我在那个方向。