2017-04-24 61 views
0

我写了下面的代码发送一个简单地发送“test”到指定电子邮件地址的电子邮件。用Python中的smtplib多次发送电子邮件

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") 

当我试图发送更多的电子邮件比1,例如:

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

只有一个电子邮件发送,然后我得到的错误“邮件不能发送。”在第一封电子邮件发送后,我没有收到“已发送电子邮件”,但第一封邮件后只有一封“未发送电子邮件”。我该如何解决这个问题?我想最终有一个input(),这样我就可以输入要发送的电子邮件数量,程序会将输入的电子邮件数量发送到输入中。我把我认为这看起来是顶部的评论。我可以通过numberEmails命令乘以server.sendmail命令吗?

这是我第一天使用Python,所以对我来说很容易请。 :)

回答

1

你不能乘以此。

乘法只能用数字完成,server.sendmail(sentFrom, to, msg)不会导致数字。

你将不得不循环所需的金额。

因此,作为一个例子,这个输出“Hello World”五次:

def test(): 
    print "hello world" 

numberEmails = 5 

for _ in range(numberEmails): 
    test() 

关当然,你必须分析你的numberEmails为int,如果它不是一个整数。

最终你通过这整个块必须循环5次

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

我结束了使用while循环,感谢写得很好的响应。 – raviriley

相关问题