默认 Rails ActionMailer 未正确传送多部分电子邮件
Default Rails ActionMailer not delivering multipart emails correctly
我已经创建了,我认为是,使用 rails 的多部分电子邮件但是在发送给任何客户时它只以纯文本显示因此打印出 headers 和所有模板化。
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 行为
是的,如果您对同一操作有不同的模板,Action Mailer 会自动发送多部分电子邮件。
但如果不是这种情况,那么您也可以将内容类型和参数一起传递给邮件。
例如
def order_receipt(order)
@order = order
mail(content_type: "text/html", subject: "Order #{order.id}")
end
奇怪的是,我不得不指定内容类型是多部分的:
mail content_type: 'multipart/alternative', subject: "Order #{order.id}"
这立即解决了问题。我觉得很奇怪 Rails 必须被告知这一点。我使用的版本可能有错误?
我已经创建了,我认为是,使用 rails 的多部分电子邮件但是在发送给任何客户时它只以纯文本显示因此打印出 headers 和所有模板化。
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 行为
是的,如果您对同一操作有不同的模板,Action Mailer 会自动发送多部分电子邮件。
但如果不是这种情况,那么您也可以将内容类型和参数一起传递给邮件。 例如
def order_receipt(order)
@order = order
mail(content_type: "text/html", subject: "Order #{order.id}")
end
奇怪的是,我不得不指定内容类型是多部分的:
mail content_type: 'multipart/alternative', subject: "Order #{order.id}"
这立即解决了问题。我觉得很奇怪 Rails 必须被告知这一点。我使用的版本可能有错误?