Flask—flask_mail邮箱发送

文章目录

[隐藏]

  • 开启qq邮箱SMTP服务
  • 安装Flask-Mail
  • 配置 Flask-Mail
  • 大量邮件
  • 附件
  • 完整例子

flask-mail 文档
http://www.pythondoc.com/flask-mail/index.html
项目中不可避免需要使用邮箱认证,如果使用flask则可以利用Flask-Mail来实现

开启qq邮箱SMTP服务

之后手机验证什么的依自己帐号设置,验证成功后会获得一个授权码,这个需要保存后续发送邮箱时密码就填这个授权码。

安装Flask-Mail

使用 pip 或者 easy_install 安装 Flask-Mail:

pip install Flask-Mail  

或者从版本控制系统(github)中下载最新的版本:

git clone https://github.com/mattupstate/flask-mail.git  cd flask-mail  python setup.py install  

如果你正在使用 virtualenv,假设你会安装 flask-mail 在运行你的 Flask 应用程序的同一个 virtualenv 上。

配置 Flask-Mail

Flask-Mail 使用标准的 Flask 配置 API 进行配置。下面这些是可用的配置型(每一个将会在文档中进行解释):

MAIL_SERVER : 默认为 ‘localhost’  MAIL_PORT : 默认为 25  MAIL_USE_TLS : 默认为 False  MAIL_USE_SSL : 默认为 False  MAIL_DEBUG : 默认为 app.debug  MAIL_USERNAME : 默认为 None  MAIL_PASSWORD : 默认为 None  MAIL_DEFAULT_SENDER : 默认为 None  MAIL_MAX_EMAILS : 默认为 None  MAIL_SUPPRESS_SEND : 默认为 app.testing  MAIL_ASCII_ATTACHMENTS : 默认为 False  另外,Flask-Mail 使用标准的 Flask 的 TESTING 配置项用于单元测试(下面会具体介绍)。  
配置项 默认值 功能  MAIL_SERVER localhost   邮箱服务器  MAIL_PORT   25  端口  MAIL_USE_TLS    False   是否使用TLS  MAIL_USE_SSL    False   是否使用SSL  MAIL_DEBUG  app.debug   是否为DEBUG模式,打印调试消息  MAIL_SUPPRESS_SEND  app.testing 设置是否真的发送邮件,True不发送  MAIL_USERNAME   None    用户名,填邮箱  MAIL_PASSWORD   None    密码,填授权码  MAIL_DEFAULT_SENDER None    默认发送者,填邮箱  MAIL_MAX_EMAILS None    一次连接中的发送邮件的上限  MAIL_ASCII_ATTACHMENTS  False   如果 MAIL_ASCII_ATTACHMENTS 设置成 True 的话,文件名将会转换成 ASCII 的。一般用于添加附件。  
大量邮件

通常在一个 Web 应用中每一个请求会同时发送一封或者两封邮件。在某些特定的场景下,有可能会发送数十或者数百封邮件,不过这种发送工作会给交离线任务或者脚本执行。

在这种情况下发送邮件的代码会有些不同:

with mail.connect() as conn:      for user in users:          message = '...'          subject = "hello, %s" % user.name          msg = Message(recipients=[user.email],                        body=message,                        subject=subject)            conn.send(msg)  

与电子邮件服务器的连接会一直保持活动状态直到所有的邮件都已经发送完成后才会关闭(断开)。

有些邮件服务器会限制一次连接中的发送邮件的上限。你可以设置重连前的发送邮件的最大数,通过配置 MAIL_MAX_EMAILS 。

附件
with app.open_resource("image.png") as fp:      msg.attach("image.png", "image/png", fp.read())  
完整例子
from flask import Flask, request  from flask_script import Manager, Shell  from flask_mail import Mail, Message  from threading import Thread      app = Flask(__name__)  app.config['MAIL_DEBUG'] = True             # 开启debug,便于调试看信息  app.config['MAIL_SUPPRESS_SEND'] = False    # 发送邮件,为True则不发送  app.config['MAIL_SERVER'] = 'smtp.qq.com'   # 邮箱服务器  app.config['MAIL_PORT'] = 465               # 端口  app.config['MAIL_USE_SSL'] = True           # 重要,qq邮箱需要使用SSL  app.config['MAIL_USE_TLS'] = False          # 不需要使用TLS  app.config['MAIL_USERNAME'] = '[email protected]'  # 填邮箱  app.config['MAIL_PASSWORD'] = 'Wyf880204*+'      # 填授权码  app.config['MAIL_DEFAULT_SENDER'] = '[email protected]'  # 填邮箱,默认发送者  manager = Manager(app)  mail = Mail(app)      # 异步发送邮件  def send_async_email(app, msg):      with app.app_context():          mail.send(msg)      @app.route('/')  def index():      msg = Message(subject='Hello World',                    sender="[email protected]",  # 需要使用默认发送者则不用填                    recipients=['[email protected]'])      # 邮件内容会以文本和html两种格式呈现,而你能看到哪种格式取决于你的邮件客户端。      msg.body = 'sended by flask-email'      msg.html = '<b>测试Flask发送邮件<b>'      thread = Thread(target=send_async_email, args=[app, msg])      thread.start()      return '<h4>邮件发送成功</h4>'      if __name__ == '__main__':      manager.run()  

效果图:

原文出处:csdn -> https://blog.csdn.net/u013210620/article/details/80217072

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。
超哥软件库 » Flask—flask_mail邮箱发送