python使用smtplib发送多封邮件后5会断开连接Connection unexpectedly closed
时间: 2024-09-25 07:19:33 浏览: 217
在Python中,如果你使用`smtplib`库发送多封邮件后遇到"Connection unexpectedly closed"的问题,这通常是因为SMTP服务器在处理完每封邮件后自动关闭了连接,这是为了限制资源和防止滥用。SMTP协议默认的行为是单次连接发送一封或多封邮件。
解决这个问题,你需要在每次发送邮件后手动关闭连接,然后再开启新的连接。以下是基本示例:
```python
import smtplib
from email.mime.text import MIMEText
def send_email(smtp_server, username, password, from_addr, to_addrs, subject, body):
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = from_addr
msg['To'] = ', '.join(to_addrs)
server = smtplib.SMTP(smtp_server)
server.starttls() # 加密连接
server.login(username, password)
for addr in to_addrs:
server.send_message(msg, from_addr=from_addr, to_addrs=[addr])
# 每发送完一封信后关闭连接
server.quit()
# 发送多封邮件
send_email('smtp.example.com', 'your_username', 'your_password', 'sender@example.com', ['receiver1@example.com', 'receiver2@example.com'], '测试主题', '测试内容')
```
阅读全文