这个插件就如同名称一样,是专门寄信使用的(恩对,介绍就这样而已)。
在开始使用之前要先做好前置准备,首先至少要有一个 SMTP Server,这边使用 Google 提供的 SMTP Server,可以申请一个测试用的帐号,也可以使用自己的帐号。
不管用哪种帐号,建议是开启两阶段验证,并且使用应用程序密码,这样可以确保帐号安全(万一哪天不小心被谁看到了这个程序,或是推上 github 之类的,被其他人看到密码,相对来说比较安全)。
那要如何设定呢?在 Google 帐户
里面的安全性
-> 登入 Google
设定好两阶段验证後,应该会看到 应用程序密码
,像这样:
然後直接点下去後,在 选取应用程序
中选择 其他(自订名称)
。
随便输入一个名称後,按下产生。
然後最後会出现一组随机产生的 16 位的密码(这边我把它码掉了,虽然不码好像也不会出问题,但我还是习惯把它码掉了),将它复制下来,等一下会用到,然後就结束了。
这边开一个新的专案,然後按照惯例还是要使用 pip 安装一下。
$ pipenv install Flask-Mail
安装好了之後,就来建立一下架构吧。大概长这样:
ithome_chatroom
├── templates
│ └── mail.html # 寄信首页
├── app.py # 主要的档案
├── config.py # 设定档
├── Pipfile # 不管它,建立虚拟环境时自己会出现
└── Pipfile.lock # 不管它,安装套件时自己会出现
首先要设定一下有关寄信的设定,比较主要要增加的设定就这几个。
config.py
MAIL_SERVER = 'smtp.gmail.com' # 预设为 localhost
MAIL_PORT = 587 # 预设为 25
MAIL_USE_TLS = True # 预设为 False
MAIL_USERNAME = <你的 Gmail 帐号> # 预设为 None
MAIL_PASSWORD = <刚刚的复制的应用程序密码> # 预设为 None
MAIL_DEFAULT_SENDER = MAIL_USERNAME # 预设为 None,这个不设也可以
再来就是比较主要的後端了。
app.py
from flask_mail import Mail, Message # 增加这行
import config
app = Flask(__name__)
app.config.from_object(config)
# 使用 flask_mail
mail = Mail(app)
@app.route('/mail', methods=['GET', 'POST'])
def send_mail():
if request.method == 'GET':
''' 浏览器送出需求要这个页面时 '''
response = make_response(render_template('mail.html'))
elif request.method == 'POST':
''' 送出寄信 '''
# 收件人
recipient = request.values.get('recipient', None)
# 标题
title = request.values.get('title', '')
# 内容
content = request.values.get('content', '')
# 制作信件
msg = Message(title, recipients=[recipient])
msg.body = content
# 送出信件
mail.send(msg)
response = make_response('Success')
else:
response = make_response(redirect(url_for('send_mail')))
return response
if __name__ == "__main__":
app.run()
最後是可以写信的前端页面。
mail.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Mail test</title>
</head>
<body>
<h1>Hello</h1>
<h2>Mail test</h2>
<form action="/mail" method="POST">
<fieldset>
<legend>Send mail</legend>
<label>收件人</label><br />
<input type="email" name="recipient" required /><br />
<label>标题</label><br />
<input type="text" name="title" /><br />
<label>内容</label><br />
<input type="text" name="content" /><br />
<input type="submit" value="送出" />
</fieldset>
</form>
</body>
</html>
既然都写完了,那就直接来看看结果吧,写一封信寄给自己测试一下好了。
然後等它跑一下,你就会在自己的信箱看到自己寄给自己的信了。
那麽就大概这样,寄信其实没有什麽好说的,之所以还要讲它一部分原因是因为这个功能意外的蛮常使用到的,另一部分原因後面会讲到。
大家掰~掰~
前言 JS 30 是由加拿大的全端工程师 Wes Bos 免费提供的 JavaScript 简单应用...
InAppBrowser 说在最前面的,以目前的 iOS / Android 生态来看,所谓的 In...
当一个类别实体被指派值(给一个属性、常数或变数)的时候,会建立一个该实体的强参考(strong re...
今天要介绍的是「工具类型」的 Operators,也都不太困难,很好理解,继续轻松学习吧! tap ...
疫情时代,视讯串流当头,用视讯镜头来做个线上摄影吧! 自从疫情爆发後,各行各业也开始进行居家办公,...