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

如何使用Perl列出outlook文件夹?,perl,outlook,Perl,Outlook,我需要使用Perl列出Outlook收件箱中所有文件夹的帮助。我用这段代码试过了,但什么也输出不了。我是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')

我需要使用Perl列出Outlook收件箱中所有文件夹的帮助。我用这段代码试过了,但什么也输出不了。我是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;

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

电子邮件。address@domain.com 档案文件 电子邮件。address@domain.com

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

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”)-或者至少这是我的同事outlook的工作方式。

我试过了,但没有成功:(您可以看到我在代码中有所有文件夹方法。)