如何从ruby中的net // smtp发送电子邮件中的HTML内容?

bka*_*ser 2 html ruby smtp

相关代码:

msg = "Subject: Reset password instructions\n\nHello " + @request_payload["email"] + "!\n\n" +
      "A new account has been created for you at <a href=\"presentation-layer.dev\">presentation-layer.dev<a>." + 
      "Please go to that page and click \"forgot password\" to set your password."
      smtp = Net::SMTP.new 'smtp.gmail.com', 587
      smtp.enable_starttls
      smtp.start('domain', "email", 'password', :login) do
        smtp.send_message(msg, 'sender', "recip")
      end
Run Code Online (Sandbox Code Playgroud)

生成的电子邮件中只包含原始文本.如何让服务器评估HTML标记?

the*_*Man 5

要执行您想要的操作,您应该生成MIME文档.如果您确实想要这样做,请创建一个多部分MIME文档,以便同时拥有TEXT和富文本部分.

您可以从Net :: SMTP执行此操作,但必须将必要的MIME标头和部件分隔符添加到文档中.有关示例,请参阅" 使用Ruby发送电子邮件 - SMTP ".

使用Mail gem 更容易,它支持两者,特别是如果你包括多个部分或添加附件.从文档:

您还可以创建MIME电子邮件.有一些辅助方法可以为text/plain和text/html(最常见的一对)制作多部分/备用电子邮件,您可以手动创建任何其他类型的MIME电子邮件.

在" 编写和发送多部分/替代(html和文本)电子邮件 " 文档中更进一步:

邮件做了一些基本的假设,并尽可能简单地做了常见的事情....(从邮件库中询问很多)

mail = Mail.deliver do
  to      'nicolas@test.lindsaar.net.au'
  from    'Mikel Lindsaar <mikel@test.lindsaar.net.au>'
  subject 'First multipart email sent with Mail'

  text_part do
      body 'This is plain text'
  end

  html_part do
      content_type 'text/html; charset=UTF-8'
      body '<h1>This is HTML</h1>'
  end
end
Run Code Online (Sandbox Code Playgroud)