Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Perl生成邮件并在Outlook中打开_Perl_Ole - Fatal编程技术网

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

使用Perl生成邮件并在Outlook中打开,perl,ole,Perl,Ole,有人知道如何使用outlook在perl中生成邮件而不发送邮件吗?只需在生成邮件后在屏幕上打开它,让用户验证并发送邮件即可。我正在使用Win32::OLE制作邮件 PFB我正在使用的代码: sub Final_Mail_Outlook{ my($mailTo,$mailFrom,$subject,$body) = (@_); my $Outlook = Win32::OLE->GetActiveObject('Outlook.Application') || Win32

有人知道如何使用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();
}

这会按照我调用的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();
}