我通过perl自动从Exchange 2010服务器下载邮件。到目前为止,我已设法通过Exchange Web服务(EWS)和解析标头访问该邮件。现在我想知道如何将邮件的附件下载到本地临时文件夹。
我是Perl语言的新手,无法找到消息数据结构的源代码或文档。任何帮助表示赞赏。
use Email::Folder::Exchange;
use Email::Simple;
# some more code here....
my $folder = Email::Folder::Exchange->new($url, $user, $pass);
for my $message ($folder->messages) {
if ($message->header('Subject') =~ /Downloadable Message/) {
// How to access message's attachments?
}
}
答案 0 :(得分:1)
所以基本上诀窍是将Email :: Simple转换为Email :: MIME并使用Email :: MIME :: Attachment :: Stripper来解析每个附件。容易; - )
!我只复制了相关的部分......因此您可能需要将其扩展一点以便重复使用。
use Email::Folder::Exchange;
use Email::Simple;
use Email::MIME::Attachment::Stripper;
# some more code here....
my $folder = Email::Folder::Exchange->new($url, $user, $pass);
for my $message ($folder->messages) {
my $tmpMsg = Email::MIME->new($message->as_string);
my $stripper = Email::MIME::Attachment::Stripper->new($tmpMsg);
for my $a ($stripper->attachments()) {
next if $a->{'filename'} !~ /csv/i; #only csv attachments
my $tempdir = "C:\\temp\\";
my $tmpPath = $tmpdir . $a->{'filename'};
# Save file to temporary path
my $f = new IO::File $tmpPath, "w" or die "Cannot create file " . $tmpPath;
print $f $a->{'payload'};
}
}