`

Flask-mail发送邮件详细步骤及出现的错误

 
阅读更多


  这一周的时间,有点空余都在继续学习flask web,其中flask-mail这一节,算是最大的一个坑了吧!我将一步步把大家从坑里拉出来!

一、首先,将邮箱换成163的

app.config['MAIL_SERVER'] = 'smtp.163.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_SSL'] = True

二、设置环境变量

set MAIL_USERNAME=xxxx@163.com
set MAIL_PASSWORD=xxxx

是的,我不知道在什么地方,足足坑了我两天!

一开始,我在PyCharm的Terminal中设置,不行!!

后来,我又在cmd命令下设置,但是每回重启又不行了,呵呵!

最后,在我的电脑-右键-属性-高级系统设置-环境变量,将MAIL_USERNAME等设置

 

三、设置163邮箱POP3/SMTP/IMAP,如果不设置,将有如下错误:

 

  File "D:\PycharmProjects\hello\venv\lib\site-packages\flask_mail.py", line 165, in configure_host
    host.login(self.mail.username, self.mail.password)
  File "E:\Python36\Lib\smtplib.py", line 730, in login
    raise last_exception
  File "E:\Python36\Lib\smtplib.py", line 721, in login
    initial_response_ok=initial_response_ok)
  File "E:\Python36\Lib\smtplib.py", line 642, in auth
    raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (550, b'User has no permission')

 

四、在工程中templates文件夹下新建mail文件夹,新建new_user.html,内容为

User <b>{{ user.username }}</b> has joined.

五、最后,上部分hello.py的代码

 

app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')
app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')
app.config['FLASKY_MAIL_SUBJECT_PREFIX'] = '[Flasky]'
app.config['FLASKY_MAIL_SENDER'] ='Flasky Admin <xxx@163.com>'
app.config['FLASKY_ADMIN'] = os.environ.get('FLASKY_ADMIN')
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)

 

@app.route('/', methods=['GET', 'POST'])
def index():
    form = NameForm()
    if form.validate_on_submit():
        # old_name = session.get('name')
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 = ''
# send_email(app.config['FLASKY_ADMIN'], 'New User')
        # send_email(app.config['FLASKY_ADMIN'], 'New User', 'mail/new_user', user=user)
return redirect(url_for('index'))
    return render_template('index.html', form=form, name=session.get('name'), known=session.get('known', False))

if __name__ == '__main__':
    app.run(debug=True)
    # manager.run()

运行,发送成功!

  • 大小: 16.3 KB
  • 大小: 25.3 KB
分享到:
评论

相关推荐

    flask-mail发送邮件

    通过上述步骤,我们不仅可以学习如何使用 Flask-Mail 插件在 Flask 应用中发送邮件,还可以了解到如何安全地配置和使用 QQ 邮箱的 SMTP 服务器。此外,通过使用环境变量来管理敏感信息,我们进一步增强了应用的安全...

    Python库 | Flask-Stormpath-0.2.9.tar.gz

    **Flask-Stormpath-0.2.9** 是一个基于Python的Web开发框架Flask的扩展库,用于集成Stormpath服务。Stormpath是一个安全管理平台,它提供了用户身份验证、授权以及密码管理等功能,帮助企业轻松地处理用户账户和安全...

    flask-3.0.2-py3-none-any.whl

    在压缩包子文件的文件名称列表中,我们看到有两个文件:flask-3.0.2-py3-none-any.whl.txt和flask-3.0.2-py3-none-any.whl。前者可能是关于这个wheel包的一些说明文档或者日志,后者则是实际的可安装包文件。通常,....

    Python Flask Web开发入门之Bootstrap介绍使用和Flask-Nav快速导航栏 共10页.pdf

    Python Flask Web开发入门之Bootstrap介绍使用和Flask-Nav快速导航栏 Bootstrap 是当前最受欢迎的前端框架之一,来自 Twitter,Python 中同样可以使用 Bootstrap。Bootstrap 提供了大量的前端组件,能够快速构建...

    flask-session-cookie-manager-master.zip

    本项目“flask-session-cookie-manager-master.zip”显然是一款针对Flask Web框架的session管理工具,它专注于session的加密与解密。Flask是一个轻量级的Python Web服务器网关接口(WSGI)应用框架,广泛用于快速...

    Python如何通过Flask-Mail发送电子邮件

    本文详细介绍了如何使用Flask-Mail模块在Python环境中发送电子邮件的方法,包括Flask-Mail的安装、配置以及具体的使用步骤。通过这些步骤,开发者可以轻松地在其Flask应用中集成邮件发送功能,提高应用程序的功能性...

    Flask-2.2.2-py3-none-any.whl

    该资源为Flask-2.2.2-py3-none-any.whl,欢迎下载使用哦!

    flask-session-cookie-manager

    标题“flask-session-cookie-manager”指的是一个Python应用,它专门针对Flask框架,用于管理和操作session cookie。在Web开发中,session cookie是服务器用来跟踪用户状态的一种方式,特别是在无状态的HTTP协议上...

    flask-3.0.2.tar.gz

    在这个"flask-3.0.2.tar.gz"压缩包中,我们得到了Flask框架的3.0.2版本,这是对先前版本的一次更新,可能包含了性能优化、新功能的添加或已知问题的修复。 Flask的核心组件包括一个WSGI服务器、模板引擎(Jinja2)...

    flask-mailer:用于发送电子邮件的 Flask 扩展

    包括用于不同目的的不同邮件后端: 虚拟后端(用于测试) SMTP 后端(SMTP 库包装器)安装通过pip从 PyPi 安装: pip install Flask-Mailer配置选项描述MAILER_BACKEND 邮件后端的路径,例如flask_mailer.backends....

    flask-security-admin-example:结合Flask-Security和Flask-Admin的示例

    结合Flask-Security和Flask-Admin的示例史蒂夫·萨波特(Steve Saporta) 2014年4月15日 Flask-Security提供了一种向Flask Web应用程序添加身份验证和授权的便捷方法。... Flask-Mail,有助于发送由Flask-Se

    flask-3.0.3-py3-none-any.whl.zip

    标题中的"flask-3.0.3-py3-none-any.whl.zip"是一个压缩文件,其中包含了Python的Web框架Flask的一个特定版本——3.0.3。".whl"是Python的Wheel格式文件,它是预编译的Python包,用于简化安装过程。".zip"则表明这个...

    Flask-2.2.2-py3-none-any.whl.zip

    标题中的“Flask-2.2.2-py3-none-any.whl.zip”指的是一个包含Flask库特定版本(2.2.2)的压缩文件,该文件是为Python 3编译的,并且适用于任何架构。在Python的生态系统中,`.whl`文件是一种预编译的二进制包格式,...

    Flask-1.1.2-py2.py3-none-any.whl

    该资源为Flask-1.1.2-py2.py3-none-any.whl,欢迎下载使用哦!

    PyPI 官网下载 | flask-openldap-0.0.3.tar.gz

    《Flask-OpenLDAP:Python库的深度解析与应用》 在Python的Web开发领域,Flask框架以其轻量级、灵活的特点深受开发者喜爱。为了扩展Flask的功能,社区提供了许多扩展,其中Flask-OpenLDAP就是其中之一。本文将深入...

    PyPI 官网下载 | flask-restful-swagger-3-0.2.0.tar.gz

    使用Flask-Restful-Swagger-3,开发者只需在资源类上添加`@swagger.model`和`@api.representation`等装饰器,即可自动为API接口生成详细文档。同时,`@api.doc`装饰器可以用来添加额外的描述信息,使API接口的意图...

    sendgrid-flask-mail:Flask和Flask-Mail应用程序示例,该应用程序通过Twilio SendGrid发送电子邮件

    标题"sendgrid-flask-mail:Flask和Flask-Mail应用程序示例,该应用程序通过Twilio SendGrid发送电子邮件" 提供了关键信息:这是一个使用Python的Flask框架和Flask-Mail扩展的示例应用。它利用Twilio SendGrid服务来...

    基于Flask的RESTful API实战代码:集成Flask-SQLAlchemy与MySQL

    它集成了Flask-SQLAlchemy作为ORM工具与MySQL数据库进行交互。项目共包含39个文件,其中主要的Python脚本文件有23个,辅助配置文件包括6个XML文件、2个.gitignore文件、2个ini配置文件等。此外,还包括了项目文档(....

    flask-file-uploader, 在 python Flask 上使用jQuery文件上传,上传的上传网站脚本.zip

    flask-file-uploader, 在 python Flask 上使用jQuery文件上传,上传的上传网站脚本 flask-file-uploader描述File文件,支持 python Flask 和 jQuery-File-Upload插件,包括多个文件选择,拖放支持,进度条,验证和...

Global site tag (gtag.js) - Google Analytics