如何设置发送带有邮件gem的HTML邮件?

时间:2013-05-02 13:58:32

标签: html ruby email mime-types

我正在使用Mail gem发送电子邮件。这是我的代码:

require 'mail'
require 'net/smtp'

Mail.defaults do

delivery_method :smtp, { :address              => "smtp.arrakis.es",
                       :port                 => 587,
                       :domain               => 'webmail.arrakis.com',
                       :user_name            => 'myname@domain.com',
                       :password             => 'pass',
                       :authentication       => 'plain',
                       :enable_starttls_auto => true  }

end

Mail::ContentTypeField.new("text/html") #this doesnt work

msgstr= File.read('text2.txt')

list.each do |entity|
    begin
        Mail.deliver do
            from    'myname@domain.com'
            to      "#{entity}"
            subject 'a good subject'
            body   msgstr
        end
    rescue => e
    end

end
end

我不知道如何设置内容类型,以便我可以将我的电子邮件格式化为html。虽然我实际上只是希望能够像我的电子邮件客户端那样定义粗体文本:粗体文字。有没有人知道我需要指定哪种内容类型才能实现这一目标,以及如何通过邮件实现它?

只需注意,上面的代码适用于发送纯文本电子邮件。

2 个答案:

答案 0 :(得分:13)

来自documentation

  

撰写和发送多部分/替代(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

答案 1 :(得分:3)

@Simone Carletti的答案基本上是正确的,但我正在努力解决这个问题,并且不想在我的电子邮件和单独的HTML部分中使用纯文本部分。如果您只想让整个电子邮件成为HTML,那么这样的内容就可以了:

mail = Mail.deliver do
  to      'nicolas@test.lindsaar.net.au'
  from    'Mikel Lindsaar <mikel@test.lindsaar.net.au>'
  subject 'First email sent with Mail'
  content_type 'text/html; charset=UTF-8'
  body '<h1>This is HTML</h1>'
end

我可能错过了它,我没有在Mail gem文档中看到任何描述如何做到这一点的内容,我认为这比制作多部分消息更常见。该文档似乎只包括纯文本消息和多部分消息。