分享

Python 发送邮件 V1.0 ---学习笔记

 201705 2020-04-10

Python 发送邮件用到两个模块:smtplib 和 email 

这两个都是Python 的内置模块(Python安装后就准备了这些模块供使用)。

smtplib是用来发送邮件的,email是来构建邮件内容的。

首先了解一下smtplib模块发送邮件的方法:

第一行引入smtplib模块;

第二行server是一个变量,它的值是smtplib.SMTP()。通过SMTP指定一个服务器,才能把邮件发送到另一个服务器;

第三行就是连接上一步指定的服务器。host是指定的连接邮箱的服务器,port是“端口”的意思,一般默认值是25。如果默认值不通过可以去邮箱设置里面查看端口。以QQ邮箱为例,在设置->账户设置中开启SMTP服务,使用保密手机发送短信,获取QQ邮箱授权码,QQ邮箱端口是465或587;

第四行代码,是登录指定的服务器用的,需要输入两个参数:登录邮箱和授权码。

第五行代码,sendmail是发送邮件的意思。sendmail()需要发件人,收件人和邮件内容三个参数,发件人from_addr同上一步是登录邮箱。msg.as_string()是将发送的信息变为字符串类型;

第六行代码是退出服务器。

小结,发送邮件四部走:连接服务器->登陆邮箱->发送邮件->退出服务器

把代码完善一下如下:                                                                                                         

接下来是构建邮件内容的email模块

引入email模块中的几个函数。

先构建纯文本的邮件内容,版本1.0:发一封最简单的文本邮件。

MIMEText()方法需要输入三个参数:文本内容,文本类型和文本编码。

MIMEText(mgs,type,chartset)

  • #msg:文本内容,可自定义;

  • #type:文本类型默认为plain(纯文本)

  • #chartset:文本编码,中文为’utf-8'


在运行时出了一点小故障,出现报错:

ValueError: server_hostname cannot be an empty string or start with a leading dot.

原因是我的Python版本是3.7,Python3.7修改了ssl.py,导致smtplib.SMTP_SSL也有问题,解决办法就是在第16行加入host参数。

好啦看一下运行结果吧

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多