2017-04-07 96 views
1

有誰知道我如何使用Outlook在perl中創建郵件,而不是在發送郵件結束時在屏幕上打開它並讓用戶驗證併發送郵件。我使用Win32 :: OLE來創建郵件。使用Perl生成郵件並在Outlook中打開使用Perl

PFB我使用的代碼:

sub Final_Mail_Outlook{ 

    my($mailTo,$mailFrom,$subject,$body) = (@_); 

    my $Outlook = Win32::OLE->GetActiveObject('Outlook.Application') || Win32::OLE->new('Outlook.Application'); 

    # Create Mail Item 
    my $item = $Outlook->CreateItem(0); # 0 = mail item. 

    unless ($item) 
    { 
     die "Outlook is not running, cannot send mail.\n"; 
    } 

    $item->{'Subject'} = $subject; 
    $item->{'To'} = $mailTo; 
    $item->{'Body'} = $body; 
    $item->{'From'} = $mailFrom; 
    my $attach = $item->{'Attachments'}; 
    my @outputFiles = glob("$OutputPath\\*.*"); 
    foreach my $file (@outputFiles){ 
     $attach->add($file); 
    } 
    $item->Send(); 
} 

這將是我稱之爲發送功能的郵件,但我想驗證生成的郵件。那麼有沒有辦法做到這一點?

回答

1

我剛剛找到了答案,所以想到發佈它也讓其他人需要這個答案可以得到幫助。關鍵是使用Display()函數而不是Send()。 PFB修改後的代碼打開郵件並不發送它。

sub Final_Mail_Outlook{ 

    my($mailTo,$mailFrom,$subject,$body) = (@_); 

    my $Outlook = Win32::OLE->GetActiveObject('Outlook.Application') || Win32::OLE->new('Outlook.Application'); 

    # Create Mail Item 
    my $item = $Outlook->CreateItem(0); # 0 = mail item. 

    unless ($item) 
    { 
     die "Outlook is not running, cannot send mail.\n"; 
    } 

    $item->{'Subject'} = $subject; 
    $item->{'To'} = $mailTo; 
    $item->{'Body'} = $body; 
    $item->{'From'} = $mailFrom; 
    my $attach = $item->{'Attachments'}; 
    my @outputFiles = glob("$OutputPath\\*.*"); 
    foreach my $file (@outputFiles){ 
     $attach->add($file); 
    } 
    $item->Display(); 
}