【发布时间】:2014-08-31 05:58:25
【问题描述】:
我正在尝试使用 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() 时,它可以工作。 当我第二次调用它时,它给了我一个错误,说服务器已断开连接。 由于我没有销毁类实例,服务器是如何断开连接的? 以及周围的方法是什么。每次发送电子邮件时我都应该连接、登录和退出吗?
所以,在主函数中:
def main():
mail0=SendEmail();
mail0.SendAnEmail('reciever1@yahoo.com');#this works
time.sleep(60);
mail0.SendAnEmail('reciever2@yahoo.com');#this does not work
【问题讨论】: