使用Perl中的Email :: Sender进行电子邮件传递失败

时间:2013-11-08 11:30:32

标签: perl email

我正在Perl中编写一个程序,它会向收件人列表发送一封电子邮件。完成后,我想打印所有收件人的列表,如果他们收到了电子邮件,就像这样: - email@email.com是的 - email2@email.com错误  等等。

我编写了下面的代码并且它有效,如果发送失败,则将电子邮件和电子邮件发送给发件人,但我不知道如何打印列表?

use Email::Simple::Creator; # or other Email:: 
while (<lista_direcciones>) {
    #En $_ está cada una de las direcciones

my $message = Email::Simple->create(
    header => [
        From    => $dir_origen,
        To      => $_,
        Subject => $asunto,
    ],
    body => $contenido,
);

try {       
    sendmail($message, { transport => $transport });
} catch {
    warn "Sending failed: $_";
};      
}

提前致谢!

1 个答案:

答案 0 :(得分:2)

只需将它们放入哈希并保存结果即可。然后,迭代该哈希并打印结果。

my %addresses;

while (<lista_direcciones>) {

  #En $_ está cada una de las direcciones

  my $message = Email::Simple->create(
    header => [
      From    => $dir_origen,
      To      => $_,
      Subject => $asunto,
    ],
    body => $contenido,
  );

  try {
    sendmail( $message, { transport => $transport } );
    $addresses{$_} = 1;
  }
  catch {
    $addresses{$_} = 0;
    warn "Sending failed: $_";
  };
}

foreach $to ( keys %addresses ) {
  printf "%s: %s\n", $to, $addresses{$to} ? 'yes' : 'no';
}

或者你可以在你发送邮件的地方旁边放一个print

try {
  sendmail( $message, { transport => $transport } );
  print "$_ yes\n";
}
catch {
  warn "Sending failed: $_";
  print "$_ no\n";
};