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

时间:2012-05-09 17:21:01

标签: perl email 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();

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

任何想法为什么?

3 个答案:

答案 0 :(得分:3)

执行like this

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可能会尝试将其解释为数组插值。

答案 1 :(得分:2)

不使用空格分隔电子邮件地址,而是使用逗号而不插入空格。这对我有用..

答案 2 :(得分:-2)

声明一个数组,并将所有电子邮件ID设为

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

现在使用Net::SMTP模块发送电子邮件

$smtp->to(@MailTo);