Perl MIME::实体头编码正确吗?
我在Perl中使用MIME::Entity模块来创建MIME消息。一些标题似乎编码正确,而另一些标题似乎存在折叠问题 代码:Perl MIME::实体头编码正确吗?,perl,email,encoding,header,mime,Perl,Email,Encoding,Header,Mime,我在Perl中使用MIME::Entity模块来创建MIME消息。一些标题似乎编码正确,而另一些标题似乎存在折叠问题 代码: 使用严格; 使用编码; 使用MIME::Entity; 我的%build_参数=( “字符集”=>“UTF-8”, 'From'=>encode('MIME-Header','fantasyemail'), 'Subject'=>encode('MIME-Header'),一个非常长的主题,将跨越标题中的多行,并带有一个前导sp\ 在每一行的开头使用ace。”), 'Ty
使用严格;
使用编码;
使用MIME::Entity;
我的%build_参数=(
“字符集”=>“UTF-8”,
'From'=>encode('MIME-Header','fantasyemail'),
'Subject'=>encode('MIME-Header'),一个非常长的主题,将跨越标题中的多行,并带有一个前导sp\
在每一行的开头使用ace。”),
'Type'=>'multipart/alternative',
);
my$top=MIME::Entity->build(%build\u参数);
$top->print_header();
输出:
内容类型:多部分/备选;
边界=“-------------=_1312196104-11708-0”;
charset=“UTF-8”
内容传输编码:二进制
MIME版本:1.0
X-Mailer:MIME工具5.427(实体5.427)
主题:一个非常长的主题,将跨越多行在
标题,在每一新行的开头有一个前导空格。
发件人:幻想电子邮件
主题
似乎被正确地分为多行。来自的没有,在com
前面留下了一个空格,但是换行符不见了
这是标准行为还是我在MIME::Entity中发现了错误?Encode::MIME::Header(称为Encode('MIME-Header',…)
)进行了一些行拆分(在中称为折叠)
不幸的是,MIME::Entity也会进行一些行拆分,可能是以不同的方式进行的。它还消除了由Encode::MIME::Header生成的换行符。但它留下了空间
我很乐意让MIME::Entity处理我的头的编码,但它看起来只是执行行分割部分。所以我想我还是得自己给它们编码
作为一种解决方法,我使用
my $encoded_from = encode('MIME-Header', 'Fantasy Email <vujerldujhgurtelhwgutrwhgunwlhvulhgvnuwlhvuwlnhvgnulwh@gmail.com>');
$encoded_from =~ s/\r?\n\s//g;
my$encoded_from=encode('MIME-Header','fantasyemail');
$encoded\u from=~s/\r?\n\s//g;
(对于主题来说也是如此。)
现在输出如下所示:
Subject:一个非常长的主题,将跨越多行
标题,在每一新行的开头有一个前导空格。
发件人:幻想电子邮件
我想知道是否有更优雅的解决方案,比如Encode::MIME::Header具有MIME::Entity兼容模式之类的功能。对我来说似乎是个bug。主要是.com
之前的空格。另外,如果你复制了它产生的内容,似乎在标题后添加了一个新的空格,
。嗯,逗号后的双空格是对的。这显然是一个bug。还要注意,添加的空格可能在两个头中的相同位置,因此它可能是MIME::Entity
上拆分表达式中的bug。
my $encoded_from = encode('MIME-Header', 'Fantasy Email <vujerldujhgurtelhwgutrwhgunwlhvulhgvnuwlhvuwlnhvgnulwh@gmail.com>');
$encoded_from =~ s/\r?\n\s//g;