Python smtplib模块实现发送邮件

  介绍

本篇文章给大家分享的是有关Python smtplib模块实现发送邮件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

使用Python的smtplib模块来发送邮件非常简单,大部分底层的处理都由smtplib进行了封装,开发者只需要按照如下3步来发送邮件即可:

连接SMTP服务器,并使用用户名:密码登录服务器。

创建EmailMessage对象,该对象代表邮件本身。

调用代表与SMTP服务器连接的对象的sendmail()方法发送邮件。

下面程序按照上面步骤示范了如何发送邮件:

纯文本复制

import  smtplib   得到email.message  import  EmailMessage      #,定义SMTP服务器地址:   时间=smtp_server  & # 39; smtp.qq.com& # 39;   #,定义发件人地址   时间=from_addr  & # 39; kongyeeku@qq.com& # 39;   #,定义登录邮箱的密码   时间=password  & # 39; 123456 & # 39;   #,定义收件人地址:   时间=to_addr  & # 39; kongyeeku@163.com& # 39;      #,创建SMTP连接   # conn =, smtplib.SMTP (smtp_server, 25)   时间=conn  smtplib.SMTP_SSL (smtp_server, 465)   conn.set_debuglevel (1)   conn.login (from_addr,密码),,,,,,,,,,,,#①   #,创建邮件对象   时间=msg  EmailMessage ()   #,设置邮件内容   msg.set_content(& # 39;您的好,这是一封来自Python的邮件& # 39;,,& # 39;平原# 39;,,& # 39;utf - 8 # 39;)   #,发送邮件   conn.sendmail (from_addr, [to_addr], msg.as_string ())   #,退出连接   conn.quit ()

上面程序中,第15行,19行和23行代码基本代表了使用Python的smtp模块发送邮件的3大核心步骤,其中①号代码使用了发件人的地址和密码来登录邮箱。

关于该程序有以下几点需要说明:

程序中提供的邮箱密码是错误的,不用尝试。读者必须改为使用自己的邮箱地址和密码。

早期smtp服务器都采用普通的网络连接,因此默认端口是25。但现在绝大部分smtp都是基于SSL(安全套接字层)的,这样保证网络上传输的信息都是加密过的,从而使得信息更加安全。这种基于SSL的smtp服务器的默认端口是465。上面程序中连接的是QQ邮箱的基于SSL的smtp服务器,QQ邮箱服务器不支持普通的smtp。

国内有些公司的免费邮箱(比如QQ邮箱)默认是关闭了smtp的,因此需要读者登录邮箱进行设置。

由于该程序发送的邮件太简单,邮件没有主题,而且程序在测试过程中可能会发送很多邮件,因此有些邮箱服务商会将该程序发送的邮件当成垃圾邮件。

早期Python 2。x提供了email.mime、email.header email.charset email.encoders、电子邮件。迭代器等库来处理邮件,这些库设计得过于烦琐,用起来极为不便,因此读者应该尽快改为使用最新的Python库。本教程不会介绍这些过时的库。具体可参考https://docs.python.org/3/library/email.html页面的说明。

由于程序打开了smtplib调试模式(将debuglevel设置为1),因此在运行该程序时,可以看到SMTP发送邮件的详细过程。当程序运行结束后,将可以在收件人邮箱中看到一封新邮件(可能在垃圾邮件内),如下图所示 Python smtplib模块实现发送邮件

上面这封邮件是最简单的,没有为该邮件设置主题,发件人名字和收件人名字,邮件内容也只是简单的文本。如果要为邮件设置主题,发件人名字和收件人名字,那么只需设置EmailMessage对象的相应属性即可。如果程序要将邮件内容改为HTML内容,那么只需将调用EmailMessage的set_content()方法的第二个参数设置为HTML即可。

例如,如下程序只是对EmailMessage进行了修改:

import  smtplib   得到email.message  import  EmailMessage      #,定义SMTP服务器地址:   时间=smtp_server  & # 39; smtp.qq.com& # 39;   #,定义发件人地址   时间=from_addr  & # 39; kongyeeku@qq.com& # 39;   #,定义登录邮箱的密码   时间=password  & # 39; 123456 & # 39;   #,定义收件人地址:   时间=to_addr  & # 39; kongyeeku@163.com& # 39;      #,创建SMTP连接   # conn =, smtplib.SMTP (smtp_server, 25)   时间=conn  smtplib.SMTP_SSL (smtp_server, 465)   conn.set_debuglevel (1)   conn.login (from_addr,密码),,,,,,,,,,,,#①   #,创建邮件对象   时间=msg  EmailMessage ()   #,设置邮件内容,指定邮件内容为HTML   msg.set_content (& # 39; & lt; h3>邮件内容& lt;/h3> & # 39;, +   ,,,& # 39;& lt; p>您的好,这是一封来自Python的邮件& lt; p> & # 39; +   ,,,& # 39;来自& lt; https://www.yisu.com/zixun/a  href=" http://c.biancheng.net "> C语言中文网

Python smtplib模块实现发送邮件