我写了以下代码来发送一封简单发送" 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的第一天,所以请继续关注我。 :)
答案 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")