使用 Perl 生成邮件并在 Outlook 中打开它

Generate Mail and Open it in Outlook using Perl

有谁知道我如何使用 outlook 在 perl 中发送邮件而不是发送邮件,只需在发送邮件结束时在屏幕上打开它并让用户验证并发送邮件。我正在使用 Win32::OLE 来制作邮件。

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();
}

这会像我调用发送函数一样发送邮件,但我想验证生成的邮件。那有办法吗???

我刚找到一个答案,所以想把它也张贴出来,以便其他需要答案的人可以获得帮助。关键是使用函数 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();
}