如何在 ruby 中从 net//smtp 发送电子邮件中的 HTML 内容?
Posted
技术标签:
【中文标题】如何在 ruby 中从 net//smtp 发送电子邮件中的 HTML 内容?【英文标题】:How to send HTML content in email from net//smtp in ruby? 【发布时间】:2013-08-01 14:00:26 【问题描述】:相关代码:
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 标签?
【问题讨论】:
服务器(邮件传输代理 == MTA)不评估 HTML 标记。邮件用户代理 (MUA) 在向用户显示内容时会执行此操作。 【参考方案1】:听起来您需要设置“Content-Type”标头:
Content-Type: text/html;
【讨论】:
【参考方案2】:要做你想做的事,你应该生成一个 MIME 文档。如果您真的想把它做好,请创建一个多部分 MIME 文档,这样您就有了 TEXT 和富文本部分。
您可以从 Net::SMTP 执行此操作,但您必须在文档中添加必要的 MIME 标头和部分分隔符。有关如何操作的示例,请参见“Sending Email using Ruby - SMTP”。
使用Mail gem 更容易,它支持两者,尤其是当您包含多个部分或添加附件时。来自文档:
您还可以创建 MIME 电子邮件。有一些辅助方法可以为 text/plain 和 text/html(最常见的一对)制作多部分/替代电子邮件,您可以手动创建任何其他类型的 MIME 电子邮件。
在“Writing and sending a multipart/alternative (html and text) email”的文档中更下方:
Mail 做了一些基本的假设,并使做普通的事情尽可能简单......(从邮件库中询问很多)
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
【讨论】:
感谢您的帮助。如何配置此代码以使用 google smtp 服务器而不是本地运行的服务器?我注意到它说你可以通过 sendmail 发送 - 我应该只做Net::SMTP.start(server info here)
吗?
在这里查看答案 ***.com/questions/12884711/… 它给了我从 gmail 帐户发送电子邮件所需的代码以上是关于如何在 ruby 中从 net//smtp 发送电子邮件中的 HTML 内容?的主要内容,如果未能解决你的问题,请参考以下文章