python怎么发送邮件
今天小编给大家分享一下python怎么发送邮件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
介绍
有些小伙伴可能会问了:python发送邮件功能有什么用?实际上发送邮件功能确实很有用,小编曾经接触过一个自动化测试的项目,它将项目部署在服务器上,运行结果就是通过邮件功能将测试报告发送到开发者的邮箱中的。当然,那个项目用的发送邮件的库并不是stmplib库这种简单的库,但是他们在使用上具有很多的相似之处,而且在轻量级的使用上stmplib库已经足够使用了。
对于一个发送邮件功能,只要可以发送邮件就足够了。而stmplib库就体现了这一点。
安装
stmplib 是 python 内置的库,不需要额外的安装。
使用
第一种方式:本地存在stmp服务器的情况下:
import smtplibfrom email.mime.text import MIMETextfrom email.header import Headersender = 'from@yisu.com' # 发件人receivers = ['429240967@qq.com'] # 收件人,可设置为你的QQ邮箱或者其他邮箱# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')message['From'] = Header("W3Cschool教程", 'utf-8')message['To'] = Header("测试", 'utf-8')subject = 'Python SMTP 邮件测试' # 要充当标题的字符串message['Subject'] = Header(subject, 'utf-8') # 将要充当标题的字符串写入邮件try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender, receivers, message.as_string()) print ("邮件发送成功")except smtplib.SMTPException: print ("Error: 无法发送邮件")
这种方式要求本地大有STMP服务器,这之后才可以用localhost作为stmp服务器地址,然而大多数情况下我们并没有搭建本地的stmp服务器,这时候我们可以采用下面这种方式。
第二种方式:使用第三方STMP服务器:
很多邮箱服务的提供者会附带提供stmp服务,比如国内常见的163邮箱和qq邮箱都有提供对应的stmp服务,我们可以使用这些stmp服务来实现发送邮件的功能(用以替代本地stmp服务)
import smtplibfrom email.mime.text import MIMETextfrom email.header import Header# 第三方 SMTP 服务mail_host="smtp.XXX.com" #设置服务器mail_user="XXXX" #用户名mail_pass="XXXXXX" #口令 sender = 'from@yisu.com' # 发件人receivers = ['429240967@qq.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')message['From'] = Header("W3Cschool教程", 'utf-8')message['To'] = Header("测试", 'utf-8')subject = 'Python SMTP 邮件测试'message['Subject'] = Header(subject, 'utf-8')try: smtpObj = smtplib.SMTP() smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号 smtpObj.login(mail_user,mail_pass) smtpObj.sendmail(sender, receivers, message.as_string()) print ("邮件发送成功")except smtplib.SMTPException: print ("Error: 无法发送邮件")
注意:sender要修改成发件的用户名,不然会报错,另外,关于邮箱的口令并不是单纯的邮箱密码。
第三方邮件服务器支持
很多用户并没有本地的stmp服务器,而是采用邮箱服务商提供的stmp服务器,以常见的QQ邮箱为例,我们可以使用QQ账号+@qq.com作为用户名,QQ密码作为密码访问qq邮箱,但在上述代码中并不能使用qq密码作为密码,这涉及到安全问题。通常stmp服务采用的密码是一个叫授权码的字符串,也就是说上述代码的mail_pass
实际上填写的是授权码。这个授权码可以到邮箱的设置中获取。
以上就是"python怎么发送邮件"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。