电子邮件(二)

news/2024/11/8 2:43:39/

书外资料

flask-mail中文文档

配置 Flask-Mail
发送邮件
大量邮件
附件
单元测试以及禁止发送邮件

发送邮件
为了能够发送邮件,首先需要创建一个 Message 实例:

from flask_mail import Message@app.route("/")
def index():msg = Message("Hello",sender="from@example.com",recipients=["to@example.com"])

你能够设置一个或者多个收件人:

msg.recipients = ["you@example.com"]
msg.add_recipient("somebodyelse@example.com")

如果你设置了 MAIL_DEFAULT_SENDER,就不必再次填写发件人,默认情况下将会使用配置项的发件人:

msg = Message("Hello",recipients=["to@example.com"])

如果 sender 是一个二元组,它将会被分成姓名和邮件地址:

msg = Message("Hello",sender=("Me", "me@example.com"))
assert msg.sender == "Me <me@example.com>"

邮件内容可以包含主体以及/或者 HTML:

msg.body = "testing"
msg.html = "<b>testing</b>"

最后,发送邮件的时候请使用 Flask 应用设置的 Mail 实例:

mail.send(msg)

正文

from flask_mail import Mail, Message
app.config['FLASKY_MAIL_SUBJECT_PREFIX'] = '[Flasky]'
###主题前缀从环境变量获取
app.config['FLASKY_MAIL_SENDER'] = '2546701377@qq.com'
###书上是代码:
###app.config['FLASKY_MAIL_SENDER']='FlaskyAdmin<flasky@example.com>'
###他的意思填入管理员的邮箱,Flasky Admin和<>都得去掉
app.config['FLASKY_ADMIN'] = os.environ.get('FLASKY_ADMIN')
###FLASKY_ADMIN从环境变量获取
...
def send_email(to, subject, template, **kwargs):
###定义send_email()函数的参数分别是收件箱地址,主题,渲染邮件正文的模板和关键字参数msg = Message(app.config['FLASKY_MAIL_SUBJECT_PREFIX'] + '' + subject,sender=app.config['FLASKY_MAIL_SENDER'], recipients=[to])
###为了能够发送邮件,首先需要创建一个 Message 实例,里面配置了主题前缀,发送人邮件地址,接收人msg.body = render_template(template + '.txt', **kwargs)msg.html = render_template(template + '.html', **kwargs)
###邮件内容可以包含主体以及/或者 HTML,send_email()里的关键字参数**kwargs传给render_template()函数,以便在模板中使用
###指定模板是不能包含扩展名,这样才能使用两个模板分别渲染纯文本正文和富文本正文。mail.send(msg)
###最后,发送邮件的时候请使用 Flask 应用设置的 Mail 实例
...
@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'] = Falseif app.config['FLASKY_ADMIN']:###如果已经在环境设置了'FLASKY_ADMIN',###提取他的值,为None不执行,有值执行send_email(app.config['FLASKY_ADMIN'], 'New User','mail/new_user', user=user)
###执行send_mail()函数,
###参数to传入的是接收者管理员邮件地址,
###subject传入的是自己提前设置的主题前缀,template传入的是提前设置的模板文件,
###**kwargs关键字参数是user=user,代表的是把表中新填入的名字传入user变量供send_email()函数中的render_template的关键字参数使用,进而替换模板中的user变量。else:session['known'] = Truesession['name'] = form.name.datareturn redirect(url_for('index'))return render_template('index.html', form=form,name=session.get('name'),known=session.get('known', False))

templates/mail文件夹下的两个文件夹new_user.html和new_user.txt:
电子邮件模板中要有一个模板参数是用户,因此调用send_email()函数时要以关键字参数的形式传入用户。

###templates/mail/new_user.html
User <b>{{ user.username }}</b> has joined.
###templates/mail/new_user.txt
User {{ user.username }} has joined.

运行命令:
(venv) C:\Users\Geek Lee\Geek-Lee.github.io>set FLASKY_ADMIN=2546701377@qq.com
(venv) C:\Users\Geek Lee\Geek-Lee.github.io>python hello.py runserver

(venv) C:\Users\Geek Lee\Geek-Lee.github.io>set
FLASKY_ADMIN=2546701377@qq.com
(venv) C:\Users\Geek Lee\Geek-Lee.github.io>python hello.py runserver* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
...File "hello.py", line 93, in indexif app.config['FLASKY_ADMIN']:
KeyError: 'FLASKY_ADMIN'
127.0.0.1 - - [21/Sep/2016 11:39:08] "POST / HTTP/1.1" 500 ###缺少从环境接受FLASKY_ADMIN配置的代码
app.config['FLASKY_ADMIN'] = os.environ.get('FLASKY_ADMIN')...File "C:\Users\GEEKLE~1\GEEK-L~1.IO\venv\lib\site-packages\flask\templating.py
", line 85, in _get_source_fastraise TemplateNotFound(template)
jinja2.exceptions.TemplateNotFound: mail/new_user.txt
127.0.0.1 - - [21/Sep/2016 11:43:22] "POST / HTTP/1.1" 500 ###这一次是缺少了mail/new_user.txtsmtplib.SMTPSenderRefused: (501, b'mail from address must be same as authorizati
on user', 'Flasky Admin 2546701377@qq.com')
127.0.0.1 - - [21/Sep/2016 11:44:09] "POST / HTTP/1.1" 500 -###这一次是把书上抄一遍
###app.config['FLASKY_MAIL_SENDER'] = 'Flasky Admin
<flasky@example.com>'
###其实应该是app.config['FLASKY_MAIL_SENDER'] = '2546701377@qq.com'(venv) C:\Users\Geek Lee\Geek-Lee.github.io>python hello.py runserver* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [21/Sep/2016 11:48:56] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [21/Sep/2016 11:49:01] "POST / HTTP/1.1" 302 -
127.0.0.1 - - [21/Sep/2016 11:49:01] "GET / HTTP/1.1" 200 -

http://www.ppmy.cn/news/333060.html

相关文章

使用javaMail收邮件 支持附件下载

javaMail 发送 复杂 邮件 附件 使用javaMail收邮件主要有两种协议&#xff0c;一种是pop3&#xff0c;一种是imap。这两种协议都可以用来收邮件&#xff0c;但是在其中的处理上是有区别的。pop3是不支持判断邮件是否为已读的&#xff0c;也就是说你不能直接从收件箱里面取到未读…

电邮里面是图片怎么下载_什么是电子邮件| 第三部分

电邮里面是图片怎么下载 电子邮件和法律 (Email and law) With the development of the Internet as indispensable working tool, litigation related to its use in the workplace was developed concurrently. The French judge was asked repeatedly about the rights of t…

电子邮件(E-mail)和电子邮件协议

一、电子邮件是什么 1.1、电子邮件简介 电子邮件(electronic mail,简称E-mail)又称电子信箱、电子邮箱,它是—种用网络手段提供信息交换的通信方式,利用电信号传递和存储电子文件、图片、音视频等各类型信息,可以使人们在任何地点、任何时间进行收发信件,解决了时空的限…

hotmail手机端_hotmail邮箱app下载

hotmail邮箱是一个非常古老的手机邮箱软件了&#xff0c;虽然现在已经很少人会使用&#xff0c;但是对于一直喜欢它的人来说&#xff0c;它是最好有的邮箱app了&#xff0c;它的界面简单&#xff0c;清新自然&#xff0c;让你想要查阅哪一封邮件都能一下找到&#xff0c;非常方…

发送电子邮件

发送电子邮件&#xff0c;在你的站点上添加一个用户&#xff0c;改用的电子邮件地址为&#xff1a; g089h515r806gmail.com.在添加改用的时候&#xff0c;向这个用户的电子邮件地址发送一封邮件&#xff0c;表示为它创建了一个账户。 warning: mail() [function.mail]: Failed…

怎么申请电子邮箱,电子邮件大全,商务人士都在用这个!

既然点进文章那不用多说&#xff0c;一定都是都是商务精英。商务人士作为职场中的精英&#xff0c;在邮箱选择方面应该如何选择呢&#xff1f;让我们来看看其他职场人都在用什么邮箱 一、职场精英阿亮 在外谈生意&#xff0c;递出自己的名片从来都是最自信的&#xff0c;不为…

免费临时邮箱大全,专注个人隐私保护

注册时不想泄露自己邮箱时可用 24小时邮箱&#xff1a;http://24mail.chacuo.net60分钟邮箱&#xff1a;https://www.guerrillamail.com/zh/10 分钟邮箱&#xff1a;https://linshiyouxiang.net/10 分钟邮箱&#xff1a;http://www.bccto.me/10 分钟邮箱&#xff1a;https://t…

电子邮件介绍

​电子邮件&#xff08;Electronic Mail&#xff0c;缩写E-Mail或email&#xff09;是一种用电子手段提供信息交换的通信方式&#xff0c;是互联网应用最广的服务。通过网络的电子邮件系统&#xff0c;用户可以以非常低廉的价格&#xff08;不管发送到哪里&#xff0c;都只需负…