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",但如果我有两个或多个电子邮件地址(以空格分隔),则它不再有效。我没有收到错误消息,但没有消息显示。

任何想法为什么?

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 回答