Excel 如何从电子邮件附件中提取压缩的xls文件?
我有一个模块,应该提取电子邮件附件,并将其放置在一个特定的位置。代码创建了POP3客户端来获取邮件,并一直在使用EMAIL::MIME::Attachment::Stripper模块提取附件,如下所示Excel 如何从电子邮件附件中提取压缩的xls文件?,excel,perl,email,zip,email-attachments,Excel,Perl,Email,Zip,Email Attachments,我有一个模块,应该提取电子邮件附件,并将其放置在一个特定的位置。代码创建了POP3客户端来获取邮件,并一直在使用EMAIL::MIME::Attachment::Stripper模块提取附件,如下所示 my $mail=$pop->HeadAndBody($i); my $parsed = Email::MIME->new($mail); my $stripper = Email::MIME::Attachment::Stripper->new($
my $mail=$pop->HeadAndBody($i);
my $parsed = Email::MIME->new($mail);
my $stripper = Email::MIME::Attachment::Stripper->new($parsed);
my @attachments = $stripper->attachments;
foreach my $a(@attachments)
{
next if $a->{content_type} !~ /octet-stream/i;
my $f = new IO::File "C:/MAIL_PARSING_DATA/" . "<filename>.<file-extension>", "w" or die "Can not create file!";
print $f $a->{payload};
goto EXITPOINT;
}
my$mail=$pop->HeadAndBody($i);
my$parsed=Email::MIME->new($mail);
我的$stripper=Email::MIME::Attachment::stripper->new($parsed);
my@attachments=$stripper->attachments;
foreach my$a(@附件)
{
接下来如果$a->{content\u type}!~/octet stream/i;
my$f=新IO::File“C:/MAIL\u PARSING\u DATA/”,“w”或“die”无法创建文件!”;
打印$f$a->{payload};
去出口点;
}
对于Perl模块识别的标准文件(如电子表格等),代码运行良好,但对于特定的邮件,它的附件是一个压缩的Excel文件。提取文件时,Perl脚本为该文件识别的内容类型为应用程序/octet流。使用上述代码提取文件时,文件似乎已损坏,因为:
next if $a->{content_type} !~ /octet-stream/i;
zip的内容类型为application/zip@neox,感谢您的回复。但是perl系统仅将文件标识为八位字节流,而不是application/zip 无论如何,我能找到解决办法 我可以通过以二进制模式写入文件来解决这个问题(具体说明如下:
binmode $fh;
在这里,文件是以二进制模式写入的,因此我不会将输出作为损坏的文件。我发现了相同的问题 XLSX文件不被视为附件。 我正在使用IMAP 它将下载电子邮件正文、任何JPG或PNG等,但即使在包含已下载附件的电子邮件中也找不到附加的xlsx