我正在尝试使用SMTPlib使用python发送电子邮件。我可以用标准方式发送一封电子邮件。现在,我想发送多封电子邮件,应该有一种方法可以在不登录的情况下完成,并在发送电子邮件之前每次退出服务器。我尝试了以下内容。我将所有内容都包装在SendEmail类中,并通过其init()方法连接到服务器:
class SendEmail:
def __init__(self):
self.username='username@yahoo.com';
self.password='password';
self.server=smtplib.SMTP('smtp.mail.yahoo.com',587);
self.server.starttls();
self.server.login(self.username,self.password);
现在,我尝试为该类使用SendAnEmail()方法,以发送多封电子邮件:
def SendAnEmail(self,reciever):
message='blah';
try:
self.server.sendmail(self.username,reciever,message);
print 'Message Sent'
except:
self.server.quit();
self.server=None;
当我宣布课程的瞬间,并且第一次调用SendAnEmail()时,它可以工作。 当我第二次调用它时,它会给我一个错误,说服务器已断开连接。 由于我没有销毁类实例,服务器如何断开连接? 它是什么方式围绕它。我每次发送电子邮件时都应该连接,登录和退出吗?
所以,在main函数中:
def main():
mail0=SendEmail();
mail0.SendAnEmail('reciever1@yahoo.com');#this works
time.sleep(60);
mail0.SendAnEmail('reciever2@yahoo.com');#this does not work
答案 0 :(得分:0)
删除time.sleep(60)
- 雅虎不会等待那么久(30秒?)并关闭连接。
其他一些事情:
sendmail()
接受收件人列表,以便您可以一次向多个收件人发送电子邮件。