0

メールを作成して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();
}

MailItem.SaveのM$ doxは次のように言います:

Microsoft Outlookアイテムを現在のフォルダーに保存します。これが新しいアイテムの場合は、アイテムタイプのOutlookの既定のフォルダーに保存します。

私のグーグルの努力の中で、これに関する他の報告を見つけることができませんでした。文書化されたとおりに機能させる方法についてのアイデアはありますか?

4

1 に答える 1

0

これは、MAPIセッションにログインしたことがないことを示しています。

Outlook.Applicationオブジェクトのインスタンスを作成した直後に、Namespaceオブジェクト(Application.GetNamespace( "MAPI")を取得してから、Namespace.Logonを呼び出します。

于 2013-03-12T18:38:29.790 に答える