6

Ruby 1.9.3 で gem 'mail' を使用して電子メールを送信しようとしています。これには、代替パーツおよび添付ファイルとして埋め込む必要がある text/html および text/plain パーツが含まれています。

これは私の現在のコードです:

require 'mail'

mail = Mail.new
mail.delivery_method :sendmail
mail.sender = "me@example.com"
mail.to = "someguy@example.com"
mail.subject = "Multipart Test"
mail.content_type = "multipart/mixed"

html_part = Mail::Part.new do
  content_type 'text/html; charset=UTF-8'
  body "<h1>HTML</h1>"
end

text_part = Mail::Part.new do
  body "TEXT"
end

mail.part :content_type => "multipart/alternative" do |p|
  p.html_part = html_part
  p.text_part = text_part
end

mail.add_file :filename => "file.txt", :content => "FILE"

mail.deliver!

その結果、機能する代替部品が添付されていないメールが送信されます。テストには Thunderbird 10.0.12 を使用しています。

すでにこれを github に投稿しましたが、残念ながら、投稿によって賢くなることはありません。https://github.com/micel/mail/issues/118#issuecomment-12276876 . たぶん、誰かが私よりも最後の投稿を少しよく理解できるでしょう ;)

誰かがこの例を機能させることができますか?

ありがとう、クリシー

4

2 に答える 2

4

私はそれを次のように修正することができました:

html_part = Mail::Part.new do
  content_type  'text/html; charset=UTF-8'
  body          html
end

text_part = Mail::Part.new do
  body          text
end

mail.part :content_type => "multipart/alternative" do |p|
  p.html_part = html_part
  p.text_part = text_part
end


mail.attachments['some.xml'] = {content: Base64.encode64(theXML), transfer_encoding: :base64}
mail.attachments['some.pdf'] = thePDF

mail.content_type = mail.content_type.gsub('alternative', 'mixed')
mail.charset= 'UTF-8'
mail.content_transfer_encoding = 'quoted-printable'

まったく直感的ではありませんが、Ponyのソース コードを読んだり、動作中の .eml をこの gem が生成しているものと比較したりすることは役に立ちました。

于 2013-11-06T22:21:40.120 に答える
0

これは、添付ファイルのコンテンツ タイプに関するバグのようです。https://github.com/micel/mail/issues/522を参照してください。

于 2013-03-03T19:07:10.143 に答える