【问题标题】:Apple Mail Client - base64 decoding issue in subject lineApple Mail Client - 主题行中的 base64 解码问题
【发布时间】:2017-10-10 02:59:22
【问题描述】:

在 Apple Mail 上,当我发送使用 Base64 编码(来自 Perl 脚本)的电子邮件时,Apple Mail 客户端未解码其主题行,即它显示的是原始 base64 编码文本。

所以当我从我的 Perl 脚本发送以下内容时:

Subject: =?UTF-8?B?IPCfjLkgVGhlIGVuY2hhbnRpbmcgc291bmR0cmFjayB0byAnQmVhdXR5IEFuZCBUaGUgQ mVhc3Qn
IGlzIG91dCB0b2RheSEg8J+MuQ==
?=

而不是显示这个: “美女与野兽”的迷人配乐今天出来了!

它显示在下面的主题行中:

=?UTF-8?B?IPCfjLkgVGhlIGVuY2hhbnRpbmcgc291bmR0cmFjayB0byAnQmVhdXR5IEFuZCBUaGUgQm Vhc3Qn
IGlzIG91dCB0b2RheSEg8J+MuQ==
?=

请您告知发生这种情况的原因。

这似乎是 Apple Mail 客户端的问题,因为同一主题行在所有其他邮件客户端上都可以正常工作。

如果我错过任何解释,请告诉我。

最好的问候, 阿马尔

【问题讨论】:

    标签: apple-mail


    【解决方案1】:

    如果您使用MIME::Base64 对字符串进行编码,它会添加一个尾随空格(出于某种原因!)。从您的示例看来,您的转换器函数正在添加换行符:

    Subject: =?UTF-8?B?IPCfjLkgVGhlIGVuY2hhbnRpbmcgc291bmR0cmFjayB0byAnQmVhdXR5IEFuZCBUaGUgQ mVhc3QnIGlzIG91dCB0b2RheSEg8J+MuQ==
    ?=
    

    ...应该都在一行上:

    Subject: =?UTF-8?B?IPCfjLkgVGhlIGVuY2hhbnRpbmcgc291bmR0cmFjayB0byAnQmVhdXR5IEFuZCBUaGUgQ mVhc3QnIGlzIG91dCB0b2RheSEg8J+MuQ==?=
    

    用换行符或空格换行会破坏编码并导致一些客户端恐慌。这是我使用的:

    ## ENCODE SUBJECT
    use MIME::Base64;
    my $subject_enc = encode_base64($subject);
    $subject_enc =~ s/^\s+|\s+$//g; #TRIMS ANY SURROUNDING WHITESPACE
    $subject_enc =~ s/^\n+|\n+$//g; #TRIMS ANY NEWLINE CHARACTERS
    my $subject_enc = '=?UTF-8?B?' . $subject_enc . '?=';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 2011-08-03
      • 2015-07-21
      • 2018-04-01
      • 1970-01-01
      • 2016-04-01
      • 2016-05-05
      相关资源
      最近更新 更多