Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl MIME::实体头编码正确吗?_Perl_Email_Encoding_Header_Mime - Fatal编程技术网

Perl 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

我在Perl中使用MIME::Entity模块来创建MIME消息。一些标题似乎编码正确,而另一些标题似乎存在折叠问题

代码:

使用严格;
使用编码;
使用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;