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/plain
,image/jpeg
是 JPEG 图片。
Content-Transfer-Encoding
描述内容的编码方式。电子邮件中的常见编码是 quoted-printable
和 base64
。这些编码是为 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。
最近在学习网络
已知 SMTP 只允许 7 位 ASCII。
我想知道 SMTP 是否可以通过电子邮件发送图片、视频或文件等附件。如果可以,附件怎么发?
谢谢
使用 SMTP,几乎每封电子邮件都使用 MIME(多用途 Internet 邮件扩展,RFC2045)。 MIME 独立于 SMTP,但可以认为是它的扩展。 HTTP 协议也在使用 MIME。
MIME 包含两部分。 MIME headers 和 MIME 内容。 MIME headers 描述了内容。 MIME 有很多功能,但我只描述与您的问题相关的内容。
MIME header 感兴趣:
Content-Type
描述内容是什么。简单地说,文本只是text/plain
,image/jpeg
是 JPEG 图片。Content-Transfer-Encoding
描述内容的编码方式。电子邮件中的常见编码是quoted-printable
和base64
。这些编码是为 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。