5

古いコードを古いUNIXボックスから新しいUNIXボックスに移動しましたが、perlスクリプトが複数の受信者に電子メールを送信するのに問題があります。古いボックスで動作します。

古いボックスperl:PA-RISC2.0用に構築されたバージョン5.004_04

新しいボックスperl:IA64.ARCHREV_0-thread-multi-LP64用に構築されたv5.8.8

スクリプトの基本は次のとおりです(簡略化)。

use Net::SMTP::Multipart;
$to = "sam\@bogus.com tom\@foo.com";
$smtp = Net::SMTP::Multipart->new($smtpserver);
$smtp->Header(To    =>  $to,
      From  =>  "junk\@junk.com",
      Subj  =>  "This is a test.");
$smtp->Text("Hello, world!\n");
$smtp->End();

これをに変更すると機能し$to = "justOneEmail\@address.com"ますが、2つ以上のメールアドレス(スペースで区切る)がある場合は機能しなくなります。エラーメッセージは表示されませんが、メッセージが表示されません。

なぜ何かアイデアはありますか?

4

3 に答える 3

4

このようにしてください:

use Net::SMTP::Multipart;
$to1 = "sam\@bogus.com"; 
$to2 = 'tom@foo.com';
$smtp = Net::SMTP::Multipart->new($smtpserver);
$smtp->Header(To    =>  [ $to1, $to2, 'another_email@server.com' ],
              From  =>  "junk\@junk.com",
              Subj  =>  "This is a test.");
$smtp->Text("Hello, world!\n");
$smtp->End();

二重引用符を使用する場合は、電子メールアドレスの@をエスケープする必要があります。そうしないと、perlが配列補間として解釈しようとする場合があります。

于 2012-05-09T17:30:37.687 に答える
3

メールアドレスをスペースで区切る代わりに、スペースを入れずにコンマを使用してください。これは私のために働きます。

于 2012-05-09T17:30:30.400 に答える
-3

配列を宣言し、すべてのメールIDを次のように配置します

@MailTo = ('mail1@demomail.com', 'mail2@demomail.com', ...., 'mailn@demomail.com')

モジュールを使用Net::SMTPしてメールを送信します

$smtp->to(@MailTo);
于 2015-05-20T11:53:48.797 に答える