Ruby on rails 提供纯文本电子邮件表单是否能确保收件人获得他可以正确显示的版本?

Ruby on rails 提供纯文本电子邮件表单是否能确保收件人获得他可以正确显示的版本?,ruby-on-rails,actionmailer,Ruby On Rails,Actionmailer,默认情况下,Rails mailers为我们提供了两种电子邮件表单:html表单和文本表单。在帖子中我发现了这样一句话: 但是,如果使用html,则应提供替代文本 版本,以确保读者不会弄乱您电子邮件的内容 真的是这样吗?如果是这样,它究竟是如何工作的?我可以看到,在我的mail.body中,我只包含了我的html版本,因此这两个版本不会同时发送。那么,当我默认设置了html表单时,在什么情况下可以使用我的文本表单呢?如何测试它?如果电子邮件以多部分电子邮件的形式发送,则电子邮件客户端可以选择将显

默认情况下,Rails mailers为我们提供了两种电子邮件表单:html表单和文本表单。在帖子中我发现了这样一句话:

但是,如果使用html,则应提供替代文本 版本,以确保读者不会弄乱您电子邮件的内容


真的是这样吗?如果是这样,它究竟是如何工作的?我可以看到,在我的mail.body中,我只包含了我的html版本,因此这两个版本不会同时发送。那么,当我默认设置了html表单时,在什么情况下可以使用我的文本表单呢?如何测试它?

如果电子邮件以多部分电子邮件的形式发送,则电子邮件客户端可以选择将显示的电子邮件格式

有些客户端甚至在不同的环境中同时使用这两种语言,例如在横幅和通知中显示文本版本的手机。未能提供纯文本版本通常会导致显示原始html

多部分电子邮件只是一封内容类型为:multipart/alternative的电子邮件;每个部分由边界标头中提供的字符串分隔

您可以使用Nokogiri解析html_部分,也可以使用它像页面一样导航:

page = Capybara::Node::Simple.new(message.html_part)
assert page.has_content?("Hello World!")

在一些项目中,我将电子邮件写为降价,并使用红毯将电子邮件转换为HTML。这样可以避免重复大多数简单电子邮件的内容。
message.text_part
message.html_part
page = Capybara::Node::Simple.new(message.html_part)
assert page.has_content?("Hello World!")