smtplib.SMTPServerDisconnected: please run connect() first flask
时间: 2024-09-09 16:02:28 浏览: 71
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
5星 · 资源好评率100%
`smtplib.SMTPServerDisconnected: please run connect() first` 错误通常发生在使用Python的`smtplib`库进行邮件发送操作时,没有在调用发送邮件相关的方法(如`sendmail`)之前先建立与SMTP服务器的连接。`connect()`方法是用来建立与SMTP服务器连接的,必须在发送邮件之前调用。
在Flask框架中使用`smtplib`可能会遇到这个问题,如果你在创建一个Flask应用并且集成邮件发送功能时,确保在发送邮件之前调用了`connect()`方法。
以下是一个简单的例子,展示了如何在Flask应用中正确使用`smtplib`发送邮件,并避免这个错误:
```python
from flask import Flask
import smtplib
from email.mime.text import MIMEText
app = Flask(__name__)
def send_email_with_flask(to, subject, body):
# 邮件服务器配置
smtp_server = 'smtp.example.com'
smtp_port = 587
smtp_user = 'your-email@example.com'
smtp_password = 'your-password'
# 创建SMTP连接
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls() # 启用安全传输模式
server.login(smtp_user, smtp_password) # 登录SMTP服务器
# 创建邮件内容
message = MIMEText(body, 'plain', 'utf-8')
message['From'] = smtp_user
message['To'] = to
message['Subject'] = subject
# 发送邮件
server.sendmail(smtp_user, to, message.as_string())
@app.route('/send_email')
def send_email():
send_email_with_flask('recipient@example.com', 'Subject', 'Email Body')
return 'Email sent successfully!'
if __name__ == '__main__':
app.run(debug=True)
```
阅读全文