使用Python中的smtplib多次发送电子邮件

时间:2017-04-24 01:56:38

标签: python email gmail smtplib

我写了以下代码来发送一封简单发送" test"到指定的电子邮件地址。

 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)

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

这是我使用Python的第一天,所以请继续关注我。 :)

1 个答案:

答案 0 :(得分:1)

你不能相乘这个。

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

你必须循环完成所需的金额。

作为一个例子,这打印"你好世界"五次:

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