我正在构建一个python程序,它可以在特定时间发送电子邮件,下面是我当前的代码
def send_email(user):
msg = email.message.EmailMessage()
msg["From"] = "my Email"
msg["To"] = user
msg["Subject"] = "Subject"
msg.add_alternative("content", subtype = "html")
server = smtplib.SMTP_SSL("smtp.gmail.com", 465)
server.login("account", "password")
server.send_message(msg)
server.close()
我想将登录过程移到 send_email 函数之外,这样它就不必每次需要发送电子邮件时都登录,所以我这样做了
server = smtplib.SMTP_SSL("smtp.gmail.com", 465)
server.login("account", "password")
def send_email(user):
msg = email.message.EmailMessage()
msg["From"] = "my Email"
msg["To"] = user
msg["Subject"] = "Subject"
msg.add_alternative("content", subtype = "html")
server.send_message(msg)
server.close()
但是我开始收到此错误:smtplib.SMTPServerDisconnected:请先运行 connect() 。 如何解决这个问题呢?或者还有其他方法可以提高效率吗?
最佳答案
每次调用 send_email
时,您都会调用 server.close()
,因此您需要再次连接/登录才能发送另一个邮件邮件。
将 server.close
调用移至 send_email
函数外部。
但是,您确定保持 session 开放是最好的方法吗?首先,我尝试使用分析器来确保瓶颈确实存在于登录过程中,而不是其他地方(即发送过程本身)。
关于python - python发送邮件的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71194794/