2012-05-09 5 views
3

Я переместил старый код из старого окна unix в новый ящик unix, и у меня возникли трудности с использованием скрипта perl, отправляющего электронные письма нескольким получателям. Он работает на старой коробке.Отправка электронной почты нескольким получателям

Старые окна Perl: версия 5.004_04 построен для PA-RISC2.0

Новая коробка Perl: v5.8.8 построен для IA64.ARCHREV_0-нить-мульти-LP64

Вот основы сценария (урезанная):

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", но если у меня есть два или несколько адресов электронной почты (разделенных пробелами), он больше не работает. Я не получаю сообщение об ошибке, но сообщение не появляется.

Любые идеи, почему?

+0

у вас есть новый вариант Unix ящик, который имеет шесть лет старую версию Perl? Интересное определение нового! Но я полагаю, что это улучшение почти 15-летней версии, которую вы имели раньше :-) –

+0

@Dave, lol. Ага. «Новое» относительное. :) –

ответ

2

Сделай like this:

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

Обратите внимание, что если вы используете двойные кавычки, вы должны избежать @ в адресах электронной почты, или Perl может попытаться интерпретировать его как массив интерполяция.

+0

Значит, 'To' под' Header' не является местом для размещения адресов электронной почты? Примеры в CPAN не показывают атрибут, который вы используете: http://search.cpan.org/~orien/Net-SMTP-Multipart-1.5.4/Multipart.pm –

+0

Хорошо, я плохой, я предположил, что вы использовали Net :: SMTP, но вы используете Net :: SMTP :: Multipart. Я думаю, ваша проблема в том, что вам нужен список адресов, то есть каждый адрес является строкой, разделяйте эти строки запятыми. Для хорошей меры просто сделайте это так, как они делают «CC» в примере CPAN в упомянутой ссылке. Редактирование моего ответа, чтобы отразить это. – theglauber

+0

ОК. Вопрос с новичком: если у меня есть @tolist = ['[email protected]', '[email protected]']; 'как передать это заголовку? Как это? 'To => @ tolist'? Разве это не испортит список парм? –

2

Вместо разделения адресов электронной почты пробелами используйте запятую без промежуточных пробелов. Это работает для меня ..

Смежные вопросы