2017-04-24 1 views
0

J'ai écrit le code suivant pour envoyer un email qui envoie simplement "test" à une adresse email spécifiée.Envoyer un email plusieurs fois avec smtplib en Python

import smtplib 
     sentFrom = "my email" 
     to = input("Enter email: ") 
     #numberEmails = raw_input ("Enter number of emails to send") 
     messageText = "test" 

     msg = "From: %s\n To: %s\n\n%s" % (sentFrom, to, messageText) 

     username = str("my email") 
     password = str("my password") 

     try : 
      server = smtplib.SMTP("smtp.gmail.com", 587) 
      server.ehlo() 
      server.starttls() 
      server.login(username,password) 
      server.sendmail(sentFrom, to, msg) 
      server.quit()  
      print (" Email has sent") 
     except : 
     print("email NOT sent") 

Lorsque je tente d'envoyer des e-mails plus que 1, par exemple:

5*server.sendmail(sentFrom, to, msg) 

Un seul email envoie, je reçois l'erreur "e-mail non envoyé." Je ne reçois pas un "e-mail a envoyé" après le premier e-mail envoie, seulement une impression "e-mail PAS envoyé" après le premier. Comment puis-je résoudre ce problème? Je veux éventuellement avoir une entrée() afin que je puisse entrer le nombre d'emails à envoyer, et le programme envoie le nombre d'emails entrés dans l'entrée. J'ai mis comment je pense que cela ressemblerait à un commentaire au sommet. Puis-je simplement multiplier la commande server.sendmail par la commande numberEmails?

Ceci est mon premier jour en utilisant Python alors allez-y doucement sur moi pls. :)

Répondre

1

Vous ne pouvez pas multiplier ceci.

Les multiplications ne peuvent être effectuées qu'avec des nombres, server.sendmail(sentFrom, to, msg) ne donne pas de nombre.

Vous allez devoir parcourir la quantité nécessaire.

Ainsi, à titre d'exemple, cette affiche « hello world » cinq fois:

def test(): 
    print "hello world" 

numberEmails = 5 

for _ in range(numberEmails): 
    test() 

cours Off vous devez analyser votre numberEmails int si ce n'est pas un entier.

Finalement, vous avez à boucle à travers ce bloc entier 5 fois

try : 
     server = smtplib.SMTP("smtp.gmail.com", 587) 
     server.ehlo() 
     server.starttls() 
     server.login(username,password) 
     server.sendmail(sentFrom, to, msg) 
     server.quit()  
     print (" Email has sent") 
    except : 
    print("email NOT sent") 
+0

j'ai fini en utilisant une boucle while, merci pour la réponse bien écrit. – raviriley