Senden von E-Mails an mehrere Empfänger
Habe ich verschoben, einige alte code aus einer alten unix Kiste auf unserem neuen unix-Rechner, und ich habe einige Schwierigkeiten mit einem perl-Skript email-Versand an mehrere Empfänger. Es funktioniert auf der alten Kiste.
Alten Kasten perl: version 5.004_04 gebaut für PA-RISC2.0
Neue box perl: v5.8.8 gebaut für IA64.ARCHREV_0-thread-multi-LP64
Hier die Grundlagen für das Skript (abgespeckte):
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();
Dies funktioniert, wenn ich es ändern zu $to = "justOneEmail\@address.com"
, aber wenn ich zwei oder mehr E-Mail-Adressen (durch Leerzeichen getrennt), es funktioniert nicht mehr. Ich glaube nicht, erhalten Sie eine Fehlermeldung, aber keine Meldung.
Irgendwelche Ideen, warum?
lol. Yep. "Neu" ist relativ. 🙂
InformationsquelleAutor Jonathan M | 2012-05-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tun es wie diese:
Beachten Sie, dass wenn Sie verwenden Sie doppelte Anführungszeichen, sollten Sie sich entfliehen Sie dem @ in der E-Mail-Adressen oder perl kann versuchen, Sie zu interpretieren, als ein array-interpolation.
To
unterHeader
ist nicht der Ort, um die E-Mail-Adressen? Die Beispiele auf CPAN nicht zeigen, das Attribut, das Sie verwenden: search.cpan.org/~orien/Net-SMTP-Multipart-1.5.4/Multipart.pmOK, my bad, ich nahm an, Sie waren mit Net::SMTP, aber du bist mit Net::SMTP::Multipart. Ich glaube, dein problem ist, müssen Sie eine Liste von Adressen, das heißt, jede Adresse ist ein string, trennen Sie diese Zeichenfolgen durch Kommata. Für eine gute Maßnahme, tun Sie es einfach die Weise, die Sie tun, die "CC" in der CPAN Beispiel in dem link, den Sie erwähnt. Editieren meiner Antwort, um dies zu reflektieren.
OK. Newbie-Frage: wenn ich
@tolist=['[email protected]','[email protected]'];
wie kann ich vermitteln, dass der Header? Wie das?To => @tolist
? Wird das nicht versauen, die parm-Liste?Sie schreiben möchten
@tolist=('[email protected]','[email protected]');
auf und übergibt alsTo => \@tolist
ODER$tolist=['[email protected]','[email protected]'];
auf und übergibt alsTo => $tolist
.() erzeugt eine "Liste", die ist mehr oder weniger das gleiche wie ein array. @varname ein array Variablen. $varname wird eine Skalare variable (non-array, single-value). \@array oder [ x, y, z ] wird ein reference ein array (mehr oder weniger wie ein Zeiger auf ein array in C). So Sie tun können, $scalar = \@array, $scalar = [x, y, z] - siehe perldoc.perl.org/perlref.html
InformationsquelleAutor theglauber
Statt der Trennung die E-Mail-Adressen mit Leerzeichen, verwenden Sie ein Komma ohne Leerzeichen dazwischen. Dies funktioniert für mich..
InformationsquelleAutor A B
Deklarieren Sie ein array, und legen Sie alle E-Mail-id ist wie
Verwenden nun die
Net::SMTP
- Modul zum versenden der E-MailsInformationsquelleAutor user3616273