我创建了,我认为是一个使用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行为
答案 0 :(得分:3)
奇怪的是我必须指定内容类型是多部分:
mail content_type: 'multipart/alternative', subject: "Order #{order.id}"
这立即解决了这个问题。我发现Rails必须被告知这一点非常奇怪。可能在我使用的版本中有错误吗?
答案 1 :(得分:2)
是的,如果您有相同操作的不同模板,Action Mailer会自动发送多部分电子邮件。
但如果不是这种情况,那么您也可以将content-type和参数一起传递给mail。 例如。
def order_receipt(order)
@order = order
mail(content_type: "text/html", subject: "Order #{order.id}")
end