1

在 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 客户端似乎有问题,因为相同的主题行在所有其他邮件客户端上都可以正常工作。

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

最好的问候,阿马尔

4

1 回答 1

0

如果您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 . '?=';
于 2018-04-22T17:37:50.510 回答