Flask-mail发送邮件遇到的错误总结,以及成功后源码
来源:互联网 发布:类似wearaday的软件 编辑:程序博客网 时间:2024/05/16 11:45
首先放上成功发送邮件后源码,遇到的六种错误以及可能成功的解决办法在文章后半文
写的很乱….莫怪…..
from flask import Flask, render_template, session, redirect, url_forfrom flask_bootstrap import Bootstrapfrom flask_moment import Momentfrom flask_wtf import Formfrom flask_script import Managerfrom wtforms import StringField, SubmitFieldfrom wtforms.validators import DataRequiredfrom flask_sqlalchemy import SQLAlchemyfrom flask_migrate import Migrate,MigrateCommandfrom flask_mail import Mailfrom flask_mail import Messagefrom threading import Threadimport osbasedir = os.path.abspath(os.path.dirname(__file__))app = Flask(__name__)app.config['SECRET_KEY'] = 'hard to guess string'app.config['SQLALCHEMY_DATABASE_URI'] =\'sqlite:///' + os.path.join(basedir, 'data.sqlite')app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = Truedb = SQLAlchemy(app)Bootstrap(app)Moment(app)manager = Manager(app)migrate = Migrate(app, db)manager.add_command('db', MigrateCommand)app.config['DEBUG'] = Trueapp.config['MAIL_SERVER'] = 'smtp.163.com'app.config['MAIL_PORT'] = 25app.config['MAIL_USE_TLS'] = Falseapp.config['MAIL_USE_SSL'] = Falseapp.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')app.config['FLASKY_ADMIN'] = os.environ.get('FLASKY_ADMIN')app.config['FLASKY_MAIL_SUBJECT_PREFIX'] = '[Flasky]'app.config['FLASKY_MAIL_SENDER'] = '15518997683@163.com'mail = Mail(app)def send_async_email(app, msg): with app.app_context(): mail.send(msg)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) thr = Thread(target=send_async_email, args=[app, msg]) thr.start() return thrclass Role(db.Model): __tablename__ = 'roles' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), unique=True) users = db.relationship('User', backref='role') def __repr__(self): return '<Role %r>' % self.nameclass User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), unique=True, index=True) role_id = db.Column(db.Integer, db.ForeignKey('roles.id')) def __repr__(self): return '<User %r>' % self.usernameclass NameForm(Form): name = StringField('What is your name?', validators=[DataRequired()]) submit = SubmitField('Submit')@app.route('/', methods=['GET', 'POST'])def index(): form = NameForm() if form.validate_on_submit(): user = User.query.filter_by(username=form.name.data).first() if user is None: user = User(username=form.name.data) db.session.add(user) session['known'] = False if app.config['FLASKY_ADMIN']: send_email(app.config['FLASKY_ADMIN'], 'New User','mail/new_user', user=user) else: session['known'] = True session['name'] = form.name.data form.name.data = '' return redirect(url_for('index')) return render_template('index.html', form=form, name=session.get('name'),known=session.get('known', False))@app.errorhandler(404)def page_not_found(e): return render_template('404.html'), 404if __name__ == '__main__': app.run()
一、
这种错误我把MAIL_PORT从25改成587出现了。所以发生这种错误后可以检查一下MAIL_PORT是否正确。
二、
这种错误应该是环境变量中MAIL_USERNAME和MAIL_PASSWORD没有设置好。如果遇到这种错误可以尝试着不在环境中导入,直接在程序中写入账户密码。看看是否能成功
三、
这种错误应该是163邮箱中stmp功能没有打开。
遇到这种错误可以尝试着在163的网页里面,把stmp的功能打开,
同时用客户端授权码代替用户密码,这个也要在163页面设置
四、
这种错误应该是mail = Mail(app)代码位置放错了。
正确时候,这句代码在程序中出现的位置应该是在这个地方
app.config['DEBUG'] = Trueapp.config['MAIL_SERVER'] = 'smtp.163.com'app.config['MAIL_PORT'] = 25app.config['MAIL_USE_TLS'] = Falseapp.config['MAIL_USE_SSL'] = Falseapp.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')mail = Mail(app)
当我把这句代码放到这个位置
mail = Mail(app)app.config['DEBUG'] = Trueapp.config['MAIL_SERVER'] = 'smtp.163.com'app.config['MAIL_PORT'] = 25app.config['MAIL_USE_TLS'] = Falseapp.config['MAIL_USE_SSL'] = Falseapp.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')
就会出现第四种错误
五、
这种535错误,应该是你的邮箱账户和密码不匹配
六、
这种10060错误,应该是服务器错误,有些外国书上会设置服务器为smtp.gmail.com,但我们在国内,所以可以根据自身情况设置为smtp.163.com或者smtp.qq.com等等
附加一个知识点:
所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改。也就是说当关闭此cmd命令行窗口后,将不再起作用。永久性修改环境变量的方法有两种:一种是直接修改注册表,另一种是通过我的电脑-〉属性-〉高级,来设置系统的环境变量
OK!end!
所谓的光辉岁月
并不是波澜闪耀的日子
而是无人问津时
你对梦想的偏执
你是否有勇气对自己忠诚到底?
0 0
- Flask-mail发送邮件遇到的错误总结,以及成功后源码
- mail发送邮件遇到的sb错误
- Flask-Mail邮件的配置以及发送附件的方法
- Flask-Mail邮件发送问题
- 使用Flask-Mail发送邮件
- Zimbra安装成功后,邮件发送失败!!急!!发生错误 (mail.TRY_AGAIN),原因不详。
- javax.mail发送邮件遇到的问题
- 使用 flask-mail 扩展发送邮件
- 用Flask-mail发送邮件失败解决方案
- 使用Flask-Mail扩展发送邮件
- 使用Python Flask-mail发送邮件
- 使用Flask-Mail发送QQ邮件
- Linux使用mail功能自动发送邮件程序以及经常遇到的问题
- [python3.6 flask web学习]使用Flask-Mail发送邮件
- flask:使用flask-mail客户端访问触发发送邮件
- 发送邮件遇到的问题以及解决办法
- Spring发送邮件时遇到的错误
- Spring发送邮件时遇到的错误
- VMware中提示未启用intel vt-x
- iOS开发 运行时 runloop
- JavaScript的变量、作用域和内存问题
- ionic之快速启程(ionic-creator & ionic-lab)[附下载地址]
- pdo基本使用
- Flask-mail发送邮件遇到的错误总结,以及成功后源码
- 使用SecureCRT远程连接虚拟机CentOS
- En-句子句形-简单句
- 【杭电1874】畅通工程续--dijkstra算法和Floyd算法
- HDU 3665 Seaside (最短路--floyd)
- IM 开源资料
- 【HDU】-2066-一个人的旅行(最短路)(dijkstra+优先队列)
- 近 100 个 Linux 常用命令大全
- POJ 2888 Magic Bracelet