Можно ли перемещать папки Outlook с помощью Win32::OLE?

Мне удалось добавить папки в 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");     

person user3360439    schedule 08.07.2014    source источник
comment
Пространство имен Outlook VB выглядит довольно рискованно; ваша цель - переименовать папку или переназначить ее? Если целью является именование, может работать что-то вроде ...->Folders("test")->Name = "test1" (или что-то подобное, используя правильный синтаксис, например setName и т. д.). Справочник по переименованию   -  person abiessu    schedule 09.07.2014
comment
Точнее, my $Folder = $namespace->Folders("backupadmin")->Folders("Inbox")->Folders("test")->{"Name"} = "test1"; (опять же при условии, что цель состоит в том, чтобы переименовать папку, а не переродить ее) или ...->Folders("test")->SetProperty('Name', "test1")   -  person abiessu    schedule 09.07.2014
comment
Обратите внимание, что есть и другие комментарии, предполагающие, что после применения такого переименования должно быть обновление, чтобы увидеть результаты.   -  person abiessu    schedule 09.07.2014


Ответы (1)


Если вы используете популярную библиотеку Outlook Redemption, вы можете получить объект папки RDO для папки, которую хотите переместить, а затем вызвать метод MoveTo с целевой папкой RDO в качестве параметра. Для примера кода Perl вы можете сослаться на модуль Email::PST::Win32 CPAN, который использует Win32::OLE и Outlook Redemption для доступа к объектам папки RDO.

Погашение Outlook: http://www.dimastr.com/redemption/home.htm

Папка RDO с методом MoveTo: http://www.dimastr.com/redemption/rdo/rdofolder.htm

Электронная почта::PST::Win32: https://metacpan.org/release/Email-PST-Win32

person Grokify    schedule 21.03.2015