发送带附件的HTML电子邮件

时间:2013-11-14 00:54:19

标签: ruby email mime email-attachments

我对net/smtp

有疑问

对于html电子邮件,您必须在电子邮件content-type: text/html的标头中进行设置。但是,如果要发送附件,则必须将其更改为content-type: multipart/mixed。这将使html电子邮件...不再是HTML。

所以问题是......我如何完成两者? HTML和附件?

谢谢

1 个答案:

答案 0 :(得分:2)

每个附件都有自己的MIME类型

多部分电子邮件的每个部分都有自己的MIME类型。因此,虽然电子邮件的内容类型是" multipart / mixed"但每个附件都有自己的MIME类型(文本,HTML等)。

以下是Doug Steinwand撰写的来自MIME and HTML in Email的多部分电子邮件示例:

To: whoever@someplace.com
Subject: MIME test
Content-type: multipart/mixed; boundary="theBoundaryString"

--theBoundaryString

Plain text message goes in this part. Notice that it
has a blank line before it starts, meaning that this
part has no additional headers.

--theBoundaryString
Content-Type: text/html
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Content-Base: "http://somewebsite.com/"

<body><font size=4>This</font> is a 
<i>test</i>.
--theBoundaryString--

您可以在此处看到文本附件没有明确的内容类型。如果附件没有明确的内容类型,则为US ASCII TEXT。 HTML附件的内容类型为&#34; text / html&#34;。可能还有其他附件,每个附件都有自己的MIME类型。

考虑使用&#34; mail&#34;宝石

mail gem可以非常轻松地发送和解析多部分电子邮件。它稳定,维护良好,使用广泛。

README示例显示了如何发送包含文本部分和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