发送多封电子邮件时smtplib断开连接

2024-09-30 06:23:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用SMTPlib使用python发送电子邮件。我可以用标准的方式发一封邮件。现在,我想发送多个电子邮件,应该有一种方法来做到这一点,而不是登录,每次退出服务器,然后再发送电子邮件。我尝试了以下方法。我将所有内容打包在sendmail类中,并用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()方法来发送多个电子邮件:

^{pr2}$

当我声明类的一个瞬间,并第一次调用SendAnEmail()时,它就起作用了。 当我第二次调用它时,它给我一个错误,说服务器已断开连接。 既然我没有销毁类实例,服务器是如何断开连接的? 怎么解决这个问题。每次发送电子邮件时我都应该连接、登录和退出吗?在

因此,在主要功能中:

def main():
    mail0=SendEmail();
    mail0.SendAnEmail('reciever1@yahoo.com');#this works
    time.sleep(60);
    mail0.SendAnEmail('reciever2@yahoo.com');#this does not work

Tags: 方法self服务器comserverinit电子邮件def
1条回答
网友
1楼 · 发布于 2024-09-30 06:23:07

删除time.sleep(60)-雅虎不会等那么久(30秒?)并将关闭连接。在

还有几件事:

  1. Python行尾不需要分号
  2. sendmail()接受一个收件人列表,因此您可以一次性向多个收件人发送电子邮件。在

相关问题 更多 >

    热门问题