【问题标题】:Why isn't Gmail using quoted-printable encoding?为什么 Gmail 不使用带引号的可打印编码?
【发布时间】:2013-07-09 09:00:03
【问题描述】:

为什么网页版的 Gmail 将邮件内容换行而不用 = 标记中断位置,这使得电子邮件处理变得非常困难:

查看gmail发送的原始邮件内容:

这封邮件由 Mac OS X Mail 发送:

编辑:

正如Brandon Invergo 所说,他们使用不同的编码方法。很抱歉,我说 GMail 不好。

编辑 2:

它们的原始内容是:

他们被包裹在Gmail中,我猜是根据word-wrap algorithm

【问题讨论】:

    标签: gmail email-processing


    【解决方案1】:

    因此,这里有两个不同的问题,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 签名被 Gmail 错误的编码方法所破坏。 gpg --clear-sign 直接复制并粘贴到 Gmail 中并发送的文本通过插入 \n 换行符来换行,甚至以部分 quoted-printable 编码重新编码...包括可能出现在签名中的 base64 字符。如:等号=替换为=3D。这有效地破坏了加密签名,读取它的客户端会将消息显示为具有错误的签名。
    【解决方案2】:

    GMail 正在使用UTF-8 character encoding 发送文本,如内容类型所示。 Mac 电子邮件客户端使用Quoted-printable 编码发送。两者都用于发送 ASCII 范围之外的字符。 GMail 发送 8 位干净消息,而 Mail 发送 7 位消息。 7 位消息应该更节省空间,但我会犹豫说不使用它们的邮件客户端在某种程度上不“体面”。

    【讨论】:

    • 那么是否可以解包以 UTF-8 字符编码发送的邮件?
    • 我明白了。我不完全确定。如果原始内容完全没有被换行,因此每个段落都在一行上,您可以遍历并删除任何换行符,除非连续有两个,这表示段落中断。
    猜你喜欢
    • 2017-10-25
    • 2015-03-14
    • 2019-09-28
    • 2016-09-04
    • 1970-01-01
    • 2013-06-14
    • 2019-11-25
    • 2015-11-28
    • 2013-02-03
    相关资源
    最近更新 更多