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 としてフォーマットできるように、コンテンツ タイプを設定する方法がわかりません。実際には、メール クライアントのように太字のテキストを定義できるようにしたいだけですが、bold text . これを実現するために指定する必要がある content-type と、それをメールで実装する方法を知っている人はいますか?

上記のコードは、プレーンテキストのメールを送信する場合に問題なく機能します。

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 に答える