新的Outlook MailItem保存在收件箱而不是草稿

时间:2013-03-12 18:32:03

标签: perl outlook ole

我必须创建电子邮件并将其保存在Outlook(2007)草稿文件夹中。我使用Perl(ActivePerl 5.12.3)和Win32 :: OLE模块。如果Outlook已经打开它可以正常工作。 Elsif我实例化Outlook,第一封电子邮件保存在收件箱中,其余邮件保存在“草稿”文件夹中。以下说明了这个问题。

use strict;
use Win32::OLE;
use Win32::OLE::Const 'Microsoft Outlook';

my $oMailer;
# Connect to a running version of Outlook
eval { $oMailer =
   Win32::OLE->GetActiveObject('Outlook.Application')
};
die "Outlook not installed" if $@;

# Start up Outlook if not running
unless(defined $oMailer) {
  $oMailer = new Win32::OLE('Outlook.Application', sub {$_[0]->Quit;})
  or die "Unable to start an Outlook instance: $!\n";
}

for (my $i=1; $i <5; $i++) {
  my $oEmail = $oMailer->CreateItem(0) or
    die "Unable to create mail item: $!\n";

  $oEmail->{'To'} = 'me@domain.info';
  $oEmail->{'Subject'} = "This is test #$i";
  $oEmail->{BodyFormat} = olFormatHTML;
  $oEmail->{HTMLBody}   = '<html></html>';

  $oEmail->save();
}

M $ dox on MailItem.Save说:

  

将Microsoft Outlook项目保存到当前文件夹,如果是新项目,则保存到项目类型的Outlook默认文件夹。

我在谷歌搜索工作中找不到任何其他报道。是否有任何关于如何使其按照文档记录工作的想法?

1 个答案:

答案 0 :(得分:0)

这表示您从未登录过MAPI会话。

创建Outlook.Application对象的实例后,立即检索Namespace对象(Application.GetNamespace(“MAPI”),然后调用Namespace.Logon