我需要帮助列出我的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;
答案 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") - 或者至少这是它与我的同事前景的工作方式。