这里容易出错的主要原因是,把发件人、收件人给搞错、搞混了(实际上是代码中变量的命名造成的这种混淆)。以下是解决办法(主要看发件人、收件人的注释):
【解决办法开始】
- 文件 .env 中:
【
MAIL_SERVER=smtp.qq.com
# 发件人
MAIL_USERNAME=mxxxxx@foxmail.com
MAIL_PASSWORD=xxxxxxxxxx
# 收件人
FLASKY_ADMIN=33xxxx@qq.com
- 文件 hello.py 中:
app.config['MAIL_SERVER'] = os.environ.get('MAIL_SERVER')
app.config['MAIL_PORT'] = 587
app.config['MAIL_USE_TLS'] = True
# 发件人
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 <mxxxxxxx@foxmail.com>'
# 收件人
app.config['FLASKY_ADMIN'] = os.environ.get('FLASKY_ADMIN')
】
【解决办法结束】
【下面的不要看!】
第6章 电子邮件
。。。
使用Flask-Mail提供电子邮件支持
P60面的
(venv) $ export MAIL_PASSWORD=<Gmail password>
这里,我用的是QQ邮箱。这里的等号右边的密码不是QQ邮箱密码,是授权码。在登录了QQ邮箱之后,设置 - 账户 - POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 - 开启服务 - 生成授权码,这里获取。
。。。
!!!重点来了!!!
1、 6a的代码,请基本完全参照
https://github.com/miguelgrinberg/flasky-first-edition/blob/6a/hello.py
这一处第27行:
app.config['FLASKY_MAIL_SENDER'] = 'Flasky Admin <flasky@example.com>'
中的
flasky@example.com需要替换为收件人的邮箱。这里就是前面说的,基本完全参照之外,需要有点不同的地方。
注意:前后的尖括号不能删除。
2、操作:
(1) 为了确认收件人的邮箱,需要再次输入。
(venv) $ export FLASKY_ADMIN=<your-email-address>
这里前后的尖括号要去掉,并输入【1、】中的相同的邮箱
(2)导入发件人的邮箱和密码(授权码,参照本文开头)
(venv) $ export MAIL_USERNAME=<Gmail username>
(venv) $ export MAIL_PASSWORD=<Gmail password>
(3)运行程序:
(venv)$python hello.py runserver --host 0.0.0.0
(4)在网页中提交一个新的name。
(5)检查收件箱,应该会有新用户进入的邮件提示。
参考文献:
1.《Flask Web开发》