【发布时间】:2013-07-09 09:00:03
【问题描述】:
为什么网页版的 Gmail 将邮件内容换行而不用 = 标记中断位置,这使得电子邮件处理变得非常困难:
查看gmail发送的原始邮件内容:
这封邮件由 Mac OS X Mail 发送:
编辑:
正如Brandon Invergo 所说,他们使用不同的编码方法。很抱歉,我说 GMail 不好。
编辑 2:
它们的原始内容是:
他们被包裹在Gmail中,我猜是根据word-wrap algorithm。
【问题讨论】:
为什么网页版的 Gmail 将邮件内容换行而不用 = 标记中断位置,这使得电子邮件处理变得非常困难:
查看gmail发送的原始邮件内容:
这封邮件由 Mac OS X Mail 发送:
编辑:
正如Brandon Invergo 所说,他们使用不同的编码方法。很抱歉,我说 GMail 不好。
编辑 2:
它们的原始内容是:
他们被包裹在Gmail中,我猜是根据word-wrap algorithm。
【问题讨论】:
因此,这里有两个不同的问题,GMail 正在处理其中一个“不同的方式”和一个“错误的方式”。
首先是编码问题。你是对的; GMail 默认使用 UTF-8 字符集作为纯文本邮件,而 Mac OS X Mail 使用 Quoted Printable,即 MIME 内容传输编码。
第二个问题是自动换行。 RFC 2822 指定行数应为 78 个字符或更少(不包括 CR+LF。Google 通过(相当积极地)引入硬自动换行来解决这个问题,当在较小的屏幕上显示时看起来很难看,等等。大多数其他邮件客户端使用引用 printable 的功能以引入软换行符以符合此建议。这允许邮件客户端区分“硬”(即用户预期)和“软”(即由客户端引入)换行符。
GMail 没有理由不能使用这种带引号的可打印约定来代替 UTF-8,或者使用 Format=Flowed(RFC 2646,FAQ)来实现相同的结果。这些都已经存在了一段时间,在我看来,GMail 强制对纯文本用户进行自动换行有点愚蠢。
here 是一个很好的入门指南。
【讨论】:
gpg --clear-sign 直接复制并粘贴到 Gmail 中并发送的文本通过插入 \n 换行符来换行,甚至以部分 quoted-printable 编码重新编码...包括可能出现在签名中的 base64 字符。如:等号=替换为=3D。这有效地破坏了加密签名,读取它的客户端会将消息显示为具有错误的签名。
GMail 正在使用UTF-8 character encoding 发送文本,如内容类型所示。 Mac 电子邮件客户端使用Quoted-printable 编码发送。两者都用于发送 ASCII 范围之外的字符。 GMail 发送 8 位干净消息,而 Mail 发送 7 位消息。 7 位消息应该更节省空间,但我会犹豫说不使用它们的邮件客户端在某种程度上不“体面”。
【讨论】: