如何使用perl和Win32 :: OLE从磁盘打开Outlook msg文件

时间:2017-02-13 18:42:50

标签: perl outlook win32ole

我有一个目录,里面装满了我想要处理的Outlook .msg文件。 处理将打开文件并保存附件。 我已成功使用Win32 :: OLE处理Outlook文件夹中的邮件, 但这些是磁盘上的文件。如何在磁盘上打开msg文件并进行处理 使用perl和Win32 :: OLE?

限制:我在一个不允许在机器上安装任何东西的环境中工作。特别是,我无法添加其他程序或perl模块。我坚持使用全新安装perl的模块。

以下是我的尝试:

use Win32::OLE;
use Win32::OLE::Const 'Microsoft Outlook';
use Win32::OLE::Variant;

my $OL = Win32::OLE->GetActiveObject('Outlook.Application') ||
         Win32::OLE->new('Outlook.Application', 'Quit');
my $NameSpace = $OL->GetNameSpace("MAPI");

$File = Win32::GetFullPathName(".") . "\\" . "TestMessage.msg";
$msg  = $OL->Open($File);       ## Result is undefined

赞赏解决方案和/或参考。

1 个答案:

答案 0 :(得分:1)

我在互联网上进行了一些研究之后得到了以下代码,我的工作是从我本地目录中的.msg文件中提取附件。通过.msg路径到$filename

my $msg = new Email::Outlook::Message $filename;
my $data = $msg->to_email_mime;
my $stripper = Email::MIME::Attachment::Stripper->new($data);
for my $a ($stripper->attachments()) {
    my $file = $a->{filename};
    open my $fh, '>', $file or die $!;
    print $fh $a->{payload};
    close $fh;
    chmod 0644, $file;
}