L'envoi de courriels à plusieurs destinataires
J'ai déplacé une partie de l'ancien code à partir d'une vieille boîte d'unix à notre nouvelle zone d'unix, et je vais avoir quelques difficultés avec un script perl envoi de courriels à plusieurs destinataires. Il fonctionne sur le vieux coffre.
Vieille boîte de perl: version 5.004_04 construit pour PA-RISC2.0
Nouvelle boîte de perl: v5.8.8 construit pour IA64.ARCHREV_0-thread-multi-LP64
Voici les principes de base du script (stripped-down):
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();
Cela fonctionne si je l'ai changer pour $to = "justOneEmail\@address.com"
, mais si j'ai deux ou plusieurs adresses e-mail (séparés par des espaces), il ne fonctionne plus. Je n'ai pas de message d'erreur, mais aucun message ne s'affiche.
Des idées pourquoi?
lol. Yep. "Nouveau" est relative. 🙂
OriginalL'auteur Jonathan M | 2012-05-09
Vous devez vous connecter pour publier un commentaire.
Faire comme ceci:
Notez que si vous utilisez des guillemets doubles, vous devez échapper à la @ dans les adresses e-mail, ou perl peut essayer de l'interpréter comme une matrice d'interpolation.
To
sousHeader
n'est pas la place pour mettre les adresses e-mail? Les exemples sur le CPAN ne pas afficher l'attribut que vous utilisez: search.cpan.org/~orien/Net--SMTP Multipart-1.5.4/Multipart.pmOK, my bad, j'ai supposé que vous étiez à l'aide de Net::SMTP, mais vous êtes à l'aide de Net::SMTP::Multipart. Je pense que votre problème est que vous avez besoin d'une liste d'adresses, qui est, chaque adresse est une chaîne de caractères, des chaînes de caractères avec des virgules. Pour faire bonne mesure, il suffit de faire la manière de faire de la "CC" dans le CPAN exemple dans le lien que vous avez mentionné. L'édition de ma réponse pour refléter cela.
OK. Newbie question: si j'ai
@tolist=['[email protected]','[email protected]'];
comment puis-je transmettre à l'en-Tête? De cette façon?To => @tolist
? Ne sera pas que gâcher le parm liste?vous voulez écrire
@tolist=('[email protected]','[email protected]');
et de le transmettre commeTo => \@tolist
OU$tolist=['[email protected]','[email protected]'];
et de le transmettre commeTo => $tolist
.() crée une "liste", qui est plus ou moins la même chose qu'un tableau. @nom_variable est une variable tableau. $varname est une variable scalaire (tableau non, la seule valeur). \@tableau ou [ x, y, z ] crée un référence pour un tableau (plus ou moins comme un pointeur vers un tableau C). Ainsi, vous pouvez faire $scalaire = \@tableau , ou $scalaire = [x, y, z] - voir perldoc.perl.org/perlref.html
OriginalL'auteur theglauber
Au lieu de séparer les adresses e-mail par des espaces, l'utilisation des virgules sans espaces concernés. Ce qui fonctionne pour moi..
OriginalL'auteur A B
Déclarer un tableau et de mettre tous les e-mail de l'id comme
Maintenant utiliser le
Net::SMTP
module pour envoyer les e-mailsOriginalL'auteur user3616273