(venv) $ pip install flask-mail
import os
# ...
fig['MAIL_SERVER'] = 'smtp.qq'
fig['MAIL_PORT'] = 25
fig['MAIL_USE_TLS'] = True
fig['MAIL_USERNAME'] = ('MAIL_USERNAME')
fig['MAIL_PASSWORD'] = ('MAIL_PASSWORD')
fig['FLASKY_MAIL_SUBJECT_PREFIX'] = '[Flasky]'
fig['FLASKY_MAIL_SENDER'] = 'Flasky Admin <1906242834@qq>'
fig['FLASKY_ADMIN'] = ('FLASKY_ADMIN')
其中用户的邮箱名、密码、以及管理员的邮箱是通过环境变量导入的,以下为终端中的操作:
(venv) $ export MAIL_PASSWORD='xxxxx' #自己的邮箱客户端登录密码(不同于电脑登录的密码)
(venv) $ echo $MAIL_PASSWORD # 打印密码确定导入的密码是否正确
xxxxx
(venv) $ export MAIL_USERNAME='2450385291@qq' # 自己的邮箱地址
(venv) $ echo $MAIL_USERNAME # 打印自己的邮箱地址确认是否正确
2450385291@qq
(venv) $ export FLASKY_ADMIN='2450385291@qq' #导入管理员的邮箱地址
(venv) $ echo $FLASKY_ADMIN # 打印管理员的邮箱地址
1906242834@qq
下面简单说下,怎么开启QQ邮箱的SMTP服务(允许在第三方的客户端登录),
根据提示打开SMTP服务(POP3和IMAP两个都打开)生成授权码,这个授权码就是我们在使用flask-mail时候的用户密码,也是我们在手机客户端登录邮箱时的密码。
下面让我们在终端进行一次测试
(venv) $ python hello1.py shell>>> ail import Message
>>> from hello1 import mail
>>> msg = Message('test subject', sender='2450385291@qq',
... recipients=['2450385291@qq'])
>>> msg.body = 'text body'
>>> msg.html = '<b>HTML</b>'
>>> with app.app_context():
... mail.send(msg)
...
>>>
import os
# ...
class Config:SECRET_KEY = ('SECRET_KEY') or 'hard to guess string'MAIL_SERVER = 'smtp.qq'MAIL_PORT = 25MAIL_USE_TLS = TrueMAIL_DEBUG = TrueMAIL_USERNAME = ('MAIL_USERNAME')MAIL_PASSWORD = ('MAIL_PASSWORD')FLASKY_MAIL_SUBJECT_PREFIX = '[FLASKY]'FLASKY_MAIL_SENDER = 'Flasky Admin <xxxxxxx@qq>'FLASKY_ADMIN = ('FLASKY_ADMIN')
其中TLS是指的是传输层安全协议,在此处应打开,确保安全传输;DEBUG调试打开是方便我们接受到任何关于flask-mail的错误信息;其他的导入方法和上面的QQ邮箱在终端中的导入方法类似。
import os
# ...
fig['MAIL_SERVER'] = 'smtp.126'
fig['MAIL_PORT'] = 25
fig['MAIL_USE_TLS'] = True
fig['MAIL_USERNAME']('MAIL_USERNAME')
fig['MAIL_PASSWORD']('MAIL_PASSWORD')
fig['FLASKY_MAIL_SUBJECT_PREFIX'] = '[Flasky]'
fig['FLASKY_MAIL_SENDER'] = 'Flasky Admin <xxxxxxx@126>'
fig['FLASKY_ADMIN']('FLASKY_ADMIN')
(venv) $ export MAIL_USERNAME='xxxxxxxxx@126'
(venv) $ export MAIL_PASSWORD='xxxxxxxx'
(venv) $ echo $MAIL_USERNAME
xxxxxxxxx@126
(venv) $ echo $MAIL_PASSWORD
xxxxxxxx
(venv) $ python hello1.py shell >>> ail import Message
>>> from hello1 import mail
>>> msg = Message('test subject', sender='xxxxxxxxx@126',
... recipients=['xxxxxxxxx@126'])
>>> msg.body = 'text body'
>>> msg.html = '<b>HTML</b>'
>>> with app.app_context():
... mail.send(msg) # 此处没有报错的话,说明就发送成功了
... # 注意:测试发邮件的终端必须是刚刚导入环境变量的终端
使用环境变量导入邮箱的用户名和密码,显然从理论上讲是非常安全的,但是在我们的编码过程中,每次测试都要重复导入,因为终端一旦关闭,那么导入的环境变量就会失效,对于我们来说是十分不方便的,所以小编根据自己的经验,给大家提供一种较为方便的方法。
USERNAME = 'xxxxxxxx@qq'
PASSWORD = 'yyyyyy'
在hello1.py中的代码如何:
import os
# ...
from info import USERNAME, PASSWORD #从info.py中导入邮箱账户和密码
fig['MAIL_SERVER'] = 'smtp.qq'
fig['MAIL_PORT'] = 25
fig['MAIL_USE_TLS'] = True
fig['MAIL_USERNAME'] = USERNAME #将邮箱账户赋值
fig['MAIL_PASSWORD'] = PASSWORD #将邮箱密码进行赋值
fig['FLASKY_MAIL_SUBJECT_PREFIX'] = '[Flasky]'
fig['FLASKY_MAIL_SENDER'] = 'Flasky Admin <xxxxxxx@qq>'
fig['FLASKY_ADMIN'] = USERNAME
由此就不用每次在终端里进行环境变量的导入了,但是很多朋友可能会想,我的代码是推送到线上的,那我push的时候不就直接推送到github上了,别人不就可以看见我的邮箱和密码了吗(确实有这个问题,小编的邮箱原来就差点泄露过),对于使用github的小伙伴来说,可以设置,对 git的隐藏文件 .gitignore进行编辑:
(venv) $ vim .gitignore
进入.gitignore文件:
88 # Rope project settings89 .ropeproject90 Status API Training Shop Blog About91 92 secret.py # 将你不想git追踪的文件添加到里面93 info.py
有关详细的git忽略特殊文件的做法,请移步廖雪峰的git教程(忽略特殊文件),关于有朋友使用pycharm集成IDE的,自己查阅相关文档进行设置,在这里不一一赘述了。
①连接问题:
常见错误代码:Error 553,Error 550,此类错误代码一般提示连接被拒绝,原因可能是:1、邮箱的客户端密码不对,此为第一个要排除的问题,实在不行建议重新生成一个;2、邮箱的端口不对,我在这里设置的端口25,经过测试是可以正常运行的;3、关于邮箱的TLS没有打开,安全协议没有打开;4、在按照书上进行环境变量导入不正确,如果采用换将变量导入的话,建议一定要在终端进行打印,看显示的时候正确。
②编码问题:
有时候,你在win下进行编码,然后发现文件需要copy到虚拟机的ubuntu下,但是却发现文件显示乱码,那么很可能是编码问题,大家可以参考 AderStep紫夜阑珊-青伶巷草的博客Python程序在Windows终端乱码解决方法@ 。
以上就是我对flask-mail配置问题的时候的一些总结,大家可以作为参考,有什么问题,请在下面评论区评论,谢谢大家,:)。
本文发布于:2024-01-29 11:54:55,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170650049615095.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |