5

我正在使用 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。虽然我实际上只是希望能够像我的电子邮件客户端那样定义粗体文本:粗体文本。有谁知道我需要指定哪种内容类型才能实现这一点,以及如何用邮件实现它?

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

4

2 回答 2

13

文档

编写和发送多部分/替代(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-05-02T14:00:50.917 回答
4

@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 文档中没有看到任何描述如何做到这一点的内容,我认为这比制作多部分消息更常见。该文档似乎仅涵盖纯文本消息和多部分消息。

于 2015-03-27T21:40:39.813 回答