1

受信者のリストに電子メールを送信するプログラムを 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: $_";
};      
}

前もって感謝します!

4

1 に答える 1

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";
};
于 2013-11-08T13:12:18.773 に答える