2017-04-07 44 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(); 
}