2010-11-02 4 views
0

J'écris un programme qui envoie des emails à plusieurs personnes et il prend les adresses d'un fichier de configuration. Le problème est que chaque fois qu'il s'exécute il prend seulement à la première adresse et l'envoie à celui-là. D'ailleurs, cela utilise le modal configparser en python.Emailing plusieurs personnes à partir d'un fichier de configuration

Heres mon code:

reporter_email = '%s' %config.get("email", "reporter_email") 
notification_emails = ['%s' %(config.get("email", "notification_emails"))] 
to = '%s' %config.get("email", "to") 
subject = '%s' %config.get("email", "subject") 
body = ('''%s\n 
%s 
%s''' %(config.get("email", "intro_body"), str(fileNames), config.get("email", "con_body"))) 

to = "To: %s\n" %(to) 
subject = "Subject: %s\n\n" %(subject) 

smtpObj = smtplib.SMTP('%s' %config.get("email", "portal"), 25) 
smtpObj.sendmail(reporter_email, notification_emails, to + subject + body)   
smtpObj.quit() 

Répondre

0

adresse prendre et jeter dans la liste ou dict, après utilisation "boucle" et envoyer des e-mails

autre manière: utiliser bcc

+0

Merci, Je l'ai en cours d'exécution sur une boucle et son grand travail maintenant – nlee

+0

votre accueil, vous pouvez utiliser Cci pour – Efazati

1

le problème est ici:

notification_emails = ['%s' %(config.get("email", "notification_emails"))] 

cela construit la liste des e-mails de destination, mais après l'exécution de cette ligne, notification_emails contient un seul élément. vous devez utiliser une sorte de boucle (ou de compréhension de la liste) pour insérer plusieurs éléments dans cette liste.

Quel est le contenu de votre fichier de configuration? comment pouvez-vous extraire plusieurs valeurs de l'entrée notification_emails?

(impression du contenu des variables de interrest lors de l'exécution du script permet de voir ce qu'ils contiennent, et est un bon départ poitn lors du débogage)

+0

je reçois les articles sous la forme d'une liste – nlee

+0

[email] notification_emails: email1 @ quelque chose .com, [email protected] ceci est retourné à moi comme une liste – nlee

+0

je l'ai fonctionnant sur une boucle for maintenant. Merci pour votre temps – nlee

0

i utilisé une liste w/o une boucle.

[Mail Recipients] 
p1 = [email protected] 
p2 = [email protected] 
# users defined in config file 

p1 = config.get('Mail Recipients', 'p1') 
p2 = config.get('Mail Recipients', 'p2') 
# pulling users into my script 

sendTo = [p1,p2] 

maintenant, vous pouvez utiliser la fonction smtp/méthode et branchez la variable « sendTo » dans le « à: » partie du code sendmail et cela devrait fonctionner.