Flask发送邮件

Posted by Beyonderwei on 2019-10-01
Words 421 and Reading Time 1 Minutes
Viewed Times

一、什么是POP3、SMTP和IMAP?

POP3、SMTP和IMAP

二、开启邮箱的SMTP服务

以常用的网易邮箱为例(其他同理):登录后进入常规设置

  1. 选择POP3/SMTP/IMAP:开启如下两条服务,并注意到这里提示使用的是授权码登录第三方客户端,而非邮箱密码(有些邮箱使用的是密码而非授权码)
  2. 页面的最下方还有一个提示内容如下,这个也会在后面用到,有两个重要信息:
  • SMTP的服务器:smtp.163.com
  • 安全支持:POP3/SMTP/IMAP服务是全部支持SSL连接的
  1. 设置中选择 客户端授权密码 这一栏并选择开启,并记住这个授权码,开启后如下:
  2. 网易邮箱的相关服务器信息:

    三、Python Flask框架发送邮件

  3. 安装依赖包:flask_mail
    1
    pip install flask_mail
  4. 这里假设一种情况,比如一般在注册一个网站时,会给用户发送验证邮件,这时我们用浏览器访问这个接口(http://localhost:5000/register)时就会发送对应的邮件到用户邮箱(当然省略了很多如生成验证码等内容)。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    from flask import Flask
    from flask_mail import Mail, Message

    app = Flask(__name__)
    class Config(object):
    DEBUG = True
    MAIL_SERVER = 'smtp.163.com' # 邮件服务器地址
    MAIL_PORT = '465' # SSL协议端口号
    MAIL_USE_SSL = True # 使用SSL加密
    MAIL_USERNAME = 'youremail@163.com' # 邮箱
    MAIL_PASSWORD = 'xxxxxxxx' # 授权码(某些邮箱是直接使用密码)
    app.config.from_object(Config)

    mail = Mail(app)

    @app.route('/register', strict_slashes = False)
    def register():
    msg = Message('填写邮件标题', sender='youremail@163.com', recipients=['xxx@gmail.com', 'xxx@qq.com'])
    msg.body = '邮件内容'
    mail.send(msg)
    return '邮件发送成功!'

    if __name__ == '__main__':
    app.run(host = '0.0.0.0',port = 5000)

本文为作者原创文章,未经作者允许不得转载。

...

...

00:00
00:00