我正在尝试运行一个脚本,该脚本需要一个文本文件,使用 Archive::Zip 对其进行压缩,然后使用 Email::Sender 通过 smtp 将 zip 文件作为附件发送,以创建 mime 消息。
我可以在 perl 中发送 txt 文件而不会损坏。我可以手动发送 perl 压缩的文件而不会损坏。我无法通过 perl 发送手动压缩文件。
我怀疑我的问题在于读取压缩文件或创建 MIME 消息。这是相关代码,本质上是来自 Email::MIME 概要的代码,其中 $fileToSend 是压缩文件的路径。
有任何想法吗?
use strict;
use warnings;
use Email::MIME;
use Email::Sender::Transport::SMTP;
use Email::Sender::Simple qw(sendmail);
use Archive::Zip qw( :ERROR_CODES :CONSTANTS);
use IO::All;
my $message =
Email::MIME->create(
header_str => [
From => $sender,
To => $recipient,
Subject => $subject,
],
attributes => {
filename => $filename,
content_type => 'application/zip',
disposition => 'attachment',
name => $filename,
},
body => io($fileToSend)->binary->all,
#body => io($fileToSend)->all,
);