下面是Python利用Flask-Mail实现发送邮件的完整攻略:
一、Flask-Mail简介
Flask-Mail是Flask框架的一个扩展模块,可以使发送电子邮件更方便。它提供了SMTP认证、HTML邮件等功能,使用起来十分简单。
二、安装Flask-Mail
在使用Flask-Mail之前,需要先安装Flask-Mail扩展。使用pip安装即可:
pip install Flask-Mail
三、配置Flask-Mail
在使用Flask-Mail之前,还需要在Flask程序中进行配置。例如:
from flask import Flask
from flask_mail import Mail
app = Flask(__name__)
app.config['MAIL_SERVER'] = 'smtp.qq.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_SSL'] = True
app.config['MAIL_USERNAME'] = 'your_account@qq.com'
app.config['MAIL_PASSWORD'] = 'your_password'
app.config['MAIL_DEFAULT_SENDER'] = 'your_account@qq.com'
mail = Mail(app)
其中,MAIL_SERVER指定SMTP服务器地址;MAIL_PORT指定SMTP端口号,默认为25;MAIL_USE_SSL表示是否使用SSL加密;MAIL_USERNAME和MAIL_PASSWORD指定邮件账号的用户名和密码;MAIL_DEFAULT_SENDER指定默认的发件人。
四、发送简单邮件
Flask-Mail提供了send_message()方法实现邮件发送,例如:
from flask_mail import Message
msg = Message('Subject', recipients=['receiver@example.com'])
msg.body = 'text body'
msg.html = '<b>HTML</b> body'
mail.send(msg)
其中,Message类实例化需要传入邮件主题(Subject)和收件人列表(recipients),支持text body和HTML body两种格式,可以根据需要进行设置。
五、发送带附件的邮件
如果需要发送带附件的邮件,需要在Message类实例化之后,调用add_attachment()方法,例如:
with app.open_resource("path/to/file") as fp:
msg.attach("file_name", "application/octet-stream", fp.read())
mail.send(msg)
其中,add_attachment()方法需要传入附件文件名、MIME类型和附件内容,fp.read()返回文件内容。
六、示例代码
下面是完整的示例代码,包括发送简单邮件和发送带附件的邮件两种情形:
from flask import Flask
from flask_mail import Mail, Message
app = Flask(__name__)
app.config['MAIL_SERVER'] = 'smtp.qq.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_SSL'] = True
app.config['MAIL_USERNAME'] = 'your_account@qq.com'
app.config['MAIL_PASSWORD'] = 'your_password'
app.config['MAIL_DEFAULT_SENDER'] = 'your_account@qq.com'
mail = Mail(app)
@app.route('/')
def index():
msg = Message('Hello, Flask', recipients=['receiver@example.com'])
msg.body = 'This is a test email sent from Flask'
mail.send(msg)
return 'Sent'
@app.route('/attach')
def attach():
with app.open_resource("path/to/file") as fp:
msg = Message('Test Attachment', recipients=['receiver@example.com'])
msg.body = "Please check the attached file"
msg.attach("file_name", "application/octet-stream", fp.read())
mail.send(msg)
return 'Sent with attachment'
在第一个路由('/')中,发送一封简单的邮件;在第二个路由('/attach')中,发送一封带附件的邮件。
七、总结
本文介绍了Flask-Mail发送邮件的用法,包括安装、配置、发送简单邮件和发送带附件的邮件。使用Flask-Mail可以方便地在Flask应用中集成邮件发送功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python利用Flask-Mail实现发送邮件详解 - Python技术站