> email | 可读 | mime <
// 用 Quoted-Printable 对包含中文和特殊字符的邮件内容进行 MIME 编码,同时保留纯文本的可读性
保持文本可读
ASCII 区域保持为普通文本,直接查看源内容时仍然可以读懂大部分邮件正文。
MIME 邮件标准
遵循 MIME Content-Transfer-Encoding 规范,适用于大多数支持国际化的邮件客户端和服务器。
支持 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 中的“=”是什么意思?
“=” 是转义前缀:其后跟随的两个十六进制数字表示一个字节;如果出现在行末,则表示该逻辑行在下一行继续(软换行)。
// 速查表
| Input | Output | Note |
|---|---|---|
| = | =3D | = is the escape char |
| é (UTF-8 C3 A9) | =C3=A9 | each byte of a multi-byte char |
| space/tab at end of line | =20 / =09 | trailing whitespace |
| = at end of line | (soft line break) | joins lines, max 76 chars/line |
| A–Z a–z 0–9 ! * + - / etc. | as is | printable 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 个字符。