2

相关代码:

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

生成的电子邮件中只有原始文本。如何让服务器评估 HTML 标签?

4

2 回答 2

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
于 2013-08-01T03:45:35.990 回答
0

听起来您需要设置“Content-Type”标头:

Content-Type: text/html;
于 2013-07-31T22:49:53.567 回答