【发布时间】:2015-04-08 11:55:20
【问题描述】:
我已经创建了,我认为是,使用 rails 的 MultiPart 电子邮件,但在交付给任何客户端时,它只会以纯文本形式显示,因此打印出标题和所有模板。
def order_receipt(order)
@order = order
mail subject: "Order #{order.id}"
end
OrderMailer.order_receipt(Order.first).deliver
我在客户那里收到的邮件是这样的:
----==_mimepart_5525126014929_7e3f9b4c1fb98c525c2 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: etc...
然后只是样式内容应该在的框和文本。
我是否需要像这样在邮件中明确设置格式:
def order_receipt(order)
@order = order
mail subject: "Order #{order.id}" do |format|
format.text
format.html
end
end
因为我认为这是默认的 ActionMailer 行为
【问题讨论】:
-
默认行为是看是否有明文模板和html模板。如果两者都有,那么它会生成一封多部分电子邮件,每个部分都从相应的模板中设置。如果只有一个,则不会使其成为多部分。
-
这正是我的想法。我们确实有纯文本和 html 版本,所以我假设它正在发送多部分电子邮件。但是,客户端似乎不会将其读取为 HTML,而是具有 text/plain 的内容类型。顺便说一句,我使用 Apple Mail 作为启用了 html 电子邮件的客户端。
-
查看电子邮件的最佳方法是将其注销,然后在日志中查看。它应该在顶部附近有
Content-Type: multipart/alternative; boundary=mimepart_<random_string_of_chars>,然后是几个部分,由--mimepart_<the_same_random_string_of_chars>分隔 -
谢谢@MaxWillians。这就是我最终做的。由于某种原因,Content-Type 被设置为 text/pain,所以我必须在交付之前明确地将其设置为 multipart/alternative
标签: ruby-on-rails ruby actionmailer