Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ruby中从net//smtp发送电子邮件中的HTML内容?_Html_Ruby_Smtp - Fatal编程技术网

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

如何在ruby中从net//smtp发送电子邮件中的HTML内容?,html,ruby,smtp,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 th

相关代码:

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
msg=“Subject:Reset password instructions\n\nHello”+@request\u负载[“email”]+“!\n\n”+
“已在presentation layer.dev.为您创建了一个新帐户”+
“请转到该页面并单击\“忘记密码\”设置密码。”
smtp=Net::smtp.new'smtp.gmail.com',587
smtp.enable_starttls
smtp.start('domain','email','password',:login)do
smtp.send_消息(消息,'发送者',“recip”)
结束

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

听起来您需要设置“内容类型”标题:

Content-Type: text/html;

要执行您想要的操作,您应该生成一个MIME文档。如果你真的想把它做好,可以创建一个多部分MIME文档,这样你就可以同时拥有文本和富文本部分

您可以从Net::SMTP执行此操作,但必须向文档中添加必要的MIME头和部分分隔符。请参见“”以了解如何使用的示例

使用gem更容易,它同时支持这两种功能,尤其是在包含多个部件或添加附件的情况下。从文件中:

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

在“”中的文档的更下方:

Mail做了一些基本的假设,并使做普通事情尽可能简单。。。。(从邮件库询问了很多)

mail=mail.deliver-do
到nicolas@test.lindsaar.net.au'
来自“Mikel Lindsaar”
主题“随邮件发送的第一封多部分电子邮件”
文字部分做什么
正文“这是纯文本”
结束
你是做什么的
内容类型为“文本/html”;字符集=UTF-8'
正文“这是HTML”
结束
结束

服务器(邮件传输代理==MTA)不评估HTML标记。邮件用户代理(MUA)在向用户显示内容时会这样做。感谢您的帮助。如何将此代码配置为使用google smtp服务器而不是本地运行的服务器?我注意到它说你可以通过sendmail发送-我应该只做
Net::SMTP.start(这里的服务器信息)
?看看这里的答案它给了我从gmail帐户发送电子邮件所需的代码
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