千家信息网

python怎么发送邮件

发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,今天小编给大家分享一下python怎么发送邮件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解
千家信息网最后更新 2024年11月27日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怎么发送邮件"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

0