温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python怎么发送邮件

发布时间:2022-02-21 16:01:23 来源:亿速云 阅读:101 作者:iii 栏目:开发技术

今天小编给大家分享一下python怎么发送邮件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

介绍

有些小伙伴可能会问了:python发送邮件功能有什么用?实际上发送邮件功能确实很有用,小编曾经接触过一个自动化测试的项目,它将项目部署在服务器上,运行结果就是通过邮件功能将测试报告发送到开发者的邮箱中的。当然,那个项目用的发送邮件的库并不是stmplib库这种简单的库,但是他们在使用上具有很多的相似之处,而且在轻量级的使用上stmplib库已经足够使用了。

 对于一个发送邮件功能,只要可以发送邮件就足够了。而stmplib库就体现了这一点。

安装

stmplib 是 python 内置的库,不需要额外的安装。

使用

第一种方式:本地存在stmp服务器的情况下:

import smtplib
from email.mime.text import MIMEText
from email.header import Header

sender = '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 smtplib
from email.mime.text import MIMEText
from 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怎么发送邮件”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI