SMTP发送附件

SMTP send attachment

最近在学习网络

已知 SMTP 只允许 7 位 ASCII。

我想知道 SMTP 是否可以通过电子邮件发送图片、视频或文件等附件。如果可以,附件怎么发?

谢谢

使用 SMTP,几乎每封电子邮件都使用 MIME(多用途 Internet 邮件扩展,RFC2045)。 MIME 独立于 SMTP,但可以认为是它的扩展。 HTTP 协议也在使用 MIME。

MIME 包含两部分。 MIME headers 和 MIME 内容。 MIME headers 描述了内容。 MIME 有很多功能,但我只描述与您的问题相关的内容。

MIME header 感兴趣:

  • Content-Type描述内容是什么。简单地说,文本只是 text/plainimage/jpeg 是 JPEG 图片。
  • Content-Transfer-Encoding 描述内容的编码方式。电子邮件中的常见编码是 quoted-printablebase64。这些编码是为 SMTP 的 7 位传送而设计的。
  • Content-Disposition header 包含例如附件文件名。

对于发送附件或多个附件,每个附件都按上述方式编码(一些 headers + 编码内容)。首先 Content-Type header 设置为 multipart/mixed 并给出 boundary 标签,如下所示:

Content-Type: multipart/mixed; boundary=4vvtTcl0dIpecpyi12ab54

并且每个附件(headers + 内容)都以边界标记开头:

--4vvtTcl0dIpecpyi12ab54

后跟 MIME headers,然后是内容。这样邮件客户端就可以把附件分开。

我还想提一下,SMTP 有 8BITMIME 扩展以支持 8 位。参见 RFC6152: SMTP Service Extension for 8-bit MIME Transport