向多个收件人发送电子邮件

Jon*_*n M 5 email perl smtp multipart

我已经将一些旧代码从旧的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();
Run Code Online (Sandbox Code Playgroud)

如果我将其更改为$to = "justOneEmail\@address.com",则此方法有效,但如果我有两个或更多电子邮件地址(以空格分隔),则它不再有效.我没有收到错误消息,但没有显示任何消息.

有什么想法吗?

the*_*ber 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();
Run Code Online (Sandbox Code Playgroud)

请注意,如果使用双引号,则应该转义电子邮件地址中的 @,否则 Perl 可能会尝试将其解释为数组插值。

  • @JonathanM,您需要编写 `@tolist=('a@b.com','x@z.com');` 并将其作为 `To => \@tolist` **OR** ` 传入$tolist=['a@b.com','x@z.com'];` 并将其作为 `To => $tolist` 传入。 (2认同)