首先,你需要安装 Flask-Mail:
pip install Flask-Mail
然后,你可以使用以下代码配置并使用 Flask-Mail:
from flask import Flask, render_template, request, redirect, url_for, flash
from flask_mail import Mail, Message
app = Flask(__name__)
# 配置邮件服务器
app.config['MAIL_SERVER'] = 'smtp.example.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_SSL'] = True
app.config['MAIL_USERNAME'] = 'your_username'
app.config['MAIL_PASSWORD'] = 'your_password'
app.config['MAIL_DEFAULT_SENDER'] = 'your_email@example.com'
# 初始化 Mail
mail = Mail(app)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/send_email', methods=['POST'])
def send_email():
if request.method == 'POST':
recipient = request.form['recipient']
subject = request.form['subject']
body = request.form['body']
# 创建邮件对象
message = Message(subject, recipients=[recipient], body=body)
try:
# 发送邮件
mail.send(message)
flash('Email sent successfully!', 'success')
except Exception as e:
flash(f'Error sending email: {str(e)}', 'error')
return redirect(url_for('index'))
if __name__ == '__main__':
app.run(debug=True)
在上述代码中,首先配置了邮件服务器的信息,包括 SMTP 服务器、端口、使用 SSL 连接、用户名、密码等。然后,使用 Mail 类初始化邮件对象。
在路由 /send_email 中,从表单获取收件人、主题和邮件正文,然后使用 Message 类创建邮件对象。最后,通过 mail.send(message) 发送邮件。
确保在实际应用中将敏感信息(如用户名和密码)存储在安全的方式,并不要将其硬编码在应用代码中。可以使用环境变量、配置文件或其他安全的方式来管理这些信息。
在模板文件 index.html 中,你可以添加一个简单的表单,用于输入收件人、主题和邮件正文。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flask Email Example</title>
</head>
<body>
<h1>Email Example</h1>
<form action="/send_email" method="post">
<label for="recipient">Recipient:</label>
<input type="email" id="recipient" name="recipient" required>
<br>
<label for="subject">Subject:</label>
<input type="text" id="subject" name="subject" required>
<br>
<label for="body">Body:</label>
<textarea id="body" name="body" rows="4" required></textarea>
<br>
<button type="submit">Send Email</button>
</form>
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
<ul>
{% for message, category in messages %}
<li class="{{ category }}">{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
</body>
</html>
在这个例子中,用户可以通过表单输入收件人、主题和邮件正文,点击 "Send Email" 按钮后,应用程序会尝试发送邮件,并根据结果显示成功或错误消息。
转载请注明出处:http://www.zyzy.cn/article/detail/7314/Flask