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)
在运行时出了一点小故障,出现报错: 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参数。 好啦看一下运行结果吧 |
|