我正在尝试使用带有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/mikel/mail/issues/118#issuecomment-12276876。也许有人能够比我更了解最后一篇文章;)
有人能够让这个例子有效吗?
谢谢, krissi
答案 0 :(得分:2)
我设法解决了这个问题:
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与此宝石生成的内容进行比较。
答案 1 :(得分:0)
这似乎是关于附件内容类型的错误。见https://github.com/mikel/mail/issues/522