zoukankan      html  css  js  c++  java
  • 使用Flask-Mail发送邮件

    简介

    在WEB开发时,我们常常会使用到发送邮件的功能,注册时或者更换密码时,需要验证邮箱,在flask的扩展中有Flask-mai来帮助完成这一功能

    配置

    flask-mail发送邮件需要你提供你的邮箱账号和密码。某些配置是发送邮箱所必须的·。大部分flask初学者一般没有云主机和域名来搭建邮箱服务器,所以我们只能使用qq等邮件服务商给你的邮箱
    这里介绍了如何配置邮箱的config
    开发在mail文件夹中

    #/app/config
    MAIL_SERVER = 'smtp.qq.com'
    MAIL_PORT = 465
    MAIL_USE_TLS = False
    MAIL_USE_SSL = True
    # 注意此处,很多人配置发不出去和这个是有关系的
    MAIL_PASSWORD = '**********'
    MAIL_USERNAME = '********@qq.com'

    此处以qq邮箱为例子,我们填入了qq邮箱的服务器地址,他的邮箱服务的端口,TLS,SSL的选择–这是很多人发不出去邮件的关键之一,账号和密码–发不出去邮箱的另一个关键!
    QQ邮箱是使用SSL的,然后注意QQ邮箱此处的密码不是你的qq密码!!
    不是你的QQ密码!!
    。。我在这个坑陷了很久~~很久 ~~很久·
    这个密码你登陆qq邮箱,选择设置,然后点击账号
    这里写图片描述
    这里写图片描述
    邮箱的密码就是此处的授权码填入后的给你的密码。
    126等邮箱发不出去也是因为其有自己的设置。

    功能实现

    实现我们需要一个app实例

    #/usr/bin/env python
    # mail/app.py
    from flask import Flask
    from flask_mail import Mail, Message
    from threading import Thread
    
    
    app = Flask(__name__)
    mail = Mail(app)
    
    def send_async_email(app,msg):
        with app.app_context():
            mail.send()
    
    def SendMail():
        msg = Message('test',sender='***@qq.com',
                            recipients=["***@example.com"])
    #recipients是个列表,包含所有收件人
    #此处的test是邮箱的主题,sender和config中的MAIL_USERNAME要一致哦
        msg.body = 'testbody'
        msg.html = '<b>test</b>body'
    #邮件发送给目标,可以有文本,两种方式呈现,你能看见怎样的取决于你的客户端
        thr = Thread(target=send_async_email,args=[app,msg])
    #使用多线程,在实际开发中,若是不使用异步、多线程等方式,网页会卡住
        thr.start()
        return 'ok'

    在当前文件夹使用python

    >>from app import SendMail
    >>SendMail() 

    邮件就会成功发出去啦

    补充

    在具体实践中,发送邮箱会被抽象成一个函数,msg的body和html形式一般会使用flask的render_tempalte来渲染
    发送大量邮件时,QQ、126邮箱服务器很有可能认为你在发送垃圾邮件因此发不出去。
    生产环境时应当使用自己搭的邮箱服务器,或者邮箱服务商提供的企业邮箱

    参考

    flask-login中文文档 http://www.pythondoc.com/flask-mail/

       

       

  • 相关阅读:
    .ssh/config 常用配置
    openresty(nginx) 配置 http与https使用同一个端口,禁止 IP 直接访问
    uni-app 入门小白纯徒手编写组件 hello-popup
    CSS 是啥?前端小白入门级理解
    爱思助手备份 iPhone 时没有设置密码,恢复备份时需要密码的问题
    introduction-to-64-bit-assembly
    flv to mp4
    Hopper Disassembler系列之Sublime Text 3 爆破
    Hopper 学习
    微信小游戏 Three.js UI 2D text 简单方案
  • 原文地址:https://www.cnblogs.com/lynsyklate/p/6443407.html
Copyright © 2011-2022 走看看