> email | 可读 | mime <

// 用 Quoted-Printable 对包含中文和特殊字符的邮件内容进行 MIME 编码,同时保留纯文本的可读性

[可读性]

保持文本可读

ASCII 区域保持为普通文本,直接查看源内容时仍然可以读懂大部分邮件正文。

[EMAIL]

MIME 邮件标准

遵循 MIME Content-Transfer-Encoding 规范,适用于大多数支持国际化的邮件客户端和服务器。

[UNICODE]

支持 Unicode

适配 UTF-8 等编码,安全传输中文、表情符号和其他多语言文本。

>> 技术说明

Quoted-Printable 的工作原理:

Quoted-Printable 使用可打印的 ASCII 字符来表示 8 位数据。非 ASCII 字节会被编码为“=XX”(两位十六进制),每行通常限制在 76 个字符以内,通过行尾的“=”实现软换行。

示例:

"Café" → Caf=C3=A9

为什么使用 Quoted-Printable:

  • >需要保留邮件源码的可读性和可调试性
  • >邮件内容以英文/ASCII 为主,仅混入少量中文或特殊字符
  • >目标系统仍对行长和 7 位传输有限制
  • >希望在日志或存档中直接搜索和阅读正文内容
  • >需要严格遵循 MIME 邮件标准

>> 常见问题

什么是 Quoted-Printable 编码?

Quoted-Printable 是 MIME 定义的一种内容传输编码方式,用于在仅支持 7 位传输的邮件系统中安全传输 8 位数据,同时尽可能保留文本的可读性。

什么时候应该使用 Quoted-Printable?

适合正文主要是纯文本(如英文或代码),只包含少量中文或特殊字符的邮件,用于兼顾可读性和兼容性。

它和 Base64 有什么区别?

Base64 会把所有内容编码成不可读的字符串,而 Quoted-Printable 只对非 ASCII 字符进行转义,便于在调试时直接查看邮件源代码。

Quoted-Printable 中的“=”是什么意思?

“=” 是转义前缀:其后跟随的两个十六进制数字表示一个字节;如果出现在行末,则表示该逻辑行在下一行继续(软换行)。

// 速查表

InputOutputNote
==3D= is the escape char
é (UTF-8 C3 A9)=C3=A9each byte of a multi-byte char
space/tab at end of line=20 / =09trailing whitespace
= at end of line(soft line break)joins lines, max 76 chars/line
A–Z a–z 0–9 ! * + - / etc.as isprintable ASCII 33–126 (except =)

// 代码示例

Input     Café = 3 € (UTF-8)
Output    Caf=C3=A9 =3D 3 =E2=82=AC
Rules     RFC 2045 section 6.7
          * bytes 33..126 except '=' may stay literal
          * everything else -> '=' + two uppercase hex digits
          * encoded lines must not exceed 76 characters
          * a line ending in '=' is a soft break (no newline in the decoded data)
MIME      Content-Transfer-Encoding: quoted-printable

>> 更多问题

问:Quoted-Printable 用在哪里?

答:用于以 ASCII 为主、夹杂少量特殊字符的电子邮件内容(MIME)。文本保持可读,只有其余字节编码为 =XX。头部为 Content-Transfer-Encoding: quoted-printable。

问:什么是软换行?

答:行尾的“=”。它允许把长行折成最多 76 个字符,而解码时不会产生换行,各行只是被重新接起。

问:该用 Quoted-Printable 还是 Base64?

答:以拉丁文为主的文本适合 QP:开销小且可读。二进制数据或非 ASCII 文字更适合 Base64,固定开销约 33%;QP 最坏情况下每字节需 3 个字符。

其他语言