【发布时间】:2015-03-22 00:59:07
【问题描述】:
我已设法在 Outlook 中添加文件夹,但不知道如何移动它们。我的代码不会抛出任何警告,也不会移动文件夹:
#!/usr/bin/perl
use strict;
use warnings;
use Win32::OLE;
use Win32::OLE::Const 'Microsoft Outlook';
# use existing instance if Outlook is already running, or launch a new one
my $Outlook;
eval {$Outlook = Win32::OLE->GetActiveObject('Outlook.Application')};
die "Outlook not installed" if $@;
unless (defined $Outlook) {
$Outlook = Win32::OLE->new('Outlook.Application', sub {$_[0]->Quit;})
or die "Oops, cannot start Outlook";
}
my $namespace = $Outlook->GetNamespace("MAPI");
#my $Folder = $namespace->Folders("backupadmin")->Folders(
# "Inbox")->Folders->Add("test");
my $Folder = $namespace->Folders("backupadmin")->Folders(
"Inbox")->Folders("test")->MoveTo("test1");
【问题讨论】:
-
Outlook VB 命名空间看起来很冒险;您的目标是重命名文件夹还是重新设置它的父级?如果目标是命名,
...->Folders("test")->Name = "test1"之类的东西可能会起作用(或者使用正确的语法,如setName等类似的东西)。 Renaming reference -
更正确的是
my $Folder = $namespace->Folders("backupadmin")->Folders("Inbox")->Folders("test")->{"Name"} = "test1";(再次假设意图是重命名文件夹,而不是重新设置它的父级),或者...->Folders("test")->SetProperty('Name', "test1") -
请注意,还有其他 cmets 建议,一旦应用了这样的重命名,也必须刷新才能看到结果。