我正在尝试使用SMTPlib使用python发送电子邮件。我可以通过标准方式发送一封电子邮件。现在,我想发送多封电子邮件,并且应该有一种方法可以在不发送电子邮件的情况下进行登录而无需每次退出服务器。我尝试了以下方法。我将所有内容包装在一个SendEmail类中,并通过其init()方法连接到服务器:
class SendEmail:
def __init__(self):
self.username='[email protected]';
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('[email protected]');#this works
time.sleep(60);
mail0.SendAnEmail('[email protected]');#this does not work
删除time.sleep(60)
-Yahoo不会等待那么长时间(30秒?),并将关闭连接。
其他几件事:
sendmail()
接受收件人列表,因此您可以一次将电子邮件发送给多个收件人。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句