python flask发送邮件

本文介绍了在使用Python Flask框架时遇到SMTPAuthenticationError错误的解决办法,即通过启用163邮箱的POP3/SMTP服务并使用客户端授权码来发送邮件。同时,提到了安装Flask-Mail扩展,并展示了应用的基本结构,包括hello.py、404.html、500.html等文件。还特别指出在异步发送邮件时,需要手动创建程序上下文以确保Flask-Mail的send()函数能正常工作。
摘要由CSDN通过智能技术生成

python flask发送邮件
* SMTPAuthenticationError: (535, ‘Error: authentication failed’)
解决办法:调用163邮箱服务器来发送邮件,我们需要开启POP3/SMTP服务,这时163邮件会让我们设置客户端授权码,这个授权码替代上面代码部分的passwd即可成功发送邮件
安装flask-mail

pip3 install flask-mail

总体结构图

hello.py

import os
from flask import Flask, render_template, session, redirect, url_for
from flask_script import Manager, Shell
from flask_bootstrap import Bootstrap
from flask_moment import Moment
from flask_wtf import Form
from wtforms import StringField, SubmitField
from wtforms.validators import Required
from flask_mail import Mail, Message

app = Flask(__name__)
app.config['SECRET_KEY'] = 'hard to guess string'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
app.config['MAIL_SERVER'] = 'smtp.163.com'  # 163smtp服务器
app.config['MAIL_PORT'] = 25  # 端口号
app.config['MAIL_USERNAME'] = "aaa@163.com"
app.config['MAIL_PASSWORD'] = "abcabc"   #填写客户端授权码
app.config['FLASKY_MAIL_SUBJECT_PREFIX'] = '[Flasky]'
app.config['FLASKY_MAIL_SENDER'] = 'aaa@163.com'
app.config['FLASKY_ADMIN'] = "aaa@163.com"

manager = Manager(app)
bootstrap = Bootstrap(app)
moment = Moment(app)
mail = Mail(app)


def send_email(to, subject, template, **kwargs):
    msg = Message(app.config['FLASKY_MAIL_SUBJECT_PREFIX'] + ' ' + subject,
                  sender=app.config['FLASKY_MAIL_SENDER'], recipients=to)
    msg.body = render_template(template + '.txt', **kwargs)
    msg.html = render_template(template + '.html', **kwargs)
    mail.send(msg)


class NameForm(Form):
    name = StringField('What is your name?', validators=[Required()])
    submit = SubmitField('Submit')


def make_shell_context():
    return dict(app=app)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值