如何使用Perl列出outlook文件夹?

时间:2017-05-11 09:42:55

标签: perl outlook

我需要帮助列出我的Outlook收件箱中的所有文件夹与Perl。我尝试使用此代码,但无法输出任何打印。我是Perl的初学者,我找不到任何简单的解决方案。

#!/usr/bin/perl
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Outlook';
use Win32::OLE::Variant;

my $OL = Win32::OLE->GetActiveObject('Outlook.Application');

my $namespace = $OL->GetNamespace('MAPI');

my $all_folders = $namespace->all_folders();

print $all_folders;

1 个答案:

答案 0 :(得分:0)

所以我终于解决了我的问题。因为我在工作中使用outlook,所以它有一些预定义的设置。我们和其他国家的同事一起测试过,我们在同一家公司工作,但他的前景不同。所以在我的情况下,我有三个文件夹。

email.address@domain.com 档案 email.address@domain.com

我不确定为什么我的地址会在那里列出两次,但无论如何,我所要做的就是连接到我的电子邮件地址,然后列出所有文件夹。这里的示例是列出INBOX文件夹内的每个子文件夹。

use strict;

#use warnings;


### This Perl Modules should be installed!

use Win32::OLE;
use Win32::OLE::Const 'Microsoft Excel'; # instead of the constants
use Win32::OLE::Const 'Microsoft Outlook';
use Win32::OLE qw(in with);
use Win32::OLE::Variant;


use IO::File;
use IO::Handle;
use Date::Calc qw(:all);

#jumps to outlook
my $OL = Win32::OLE->GetActiveObject('Outlook.Application');

#this is predefined namespace   
my $namespace = $OL->GetNamespace('MAPI');

#loop through all folders inside of the INBOX folder   
foreach my $i (1..$namespace->Folders->Count) {

       my $folder = $namespace->Folders("email.address\@domain.com")->Folders("Inbox")->Folders($i)->Name;

       print $folder, "....\n";                    
    }

问题解决了:)。

还有一个注意事项 - >你可能在你的Outlook中有不同的设置,所以在这种情况下你可以删除第一个文件夹 - 文件夹(" email.address \ @ domain.com") - 或者至少这是它与我的同事前景的工作方式。