找回密码
 会员注册
查看: 23|回复: 0

最全总结!聊聊Python发送邮件的几种方式

[复制链接]

5

主题

0

回帖

16

积分

新手上路

积分
16
发表于 2024-9-12 14:15:28 | 显示全部楼层 |阅读模式
1.前言邮件,作为最正式规范的沟通方式,在日常办公过程中经常被用到我们都知道Python内置了对SMTP的支持,可以发送纯文本、富文本、HTML等格式的邮件本文将聊聊利用Python发送邮件的3种方式2.准备以126邮箱为例,在编码之前,我们需要开启SMTP服务然后,手动新增一个授权码其中,账号、授权码和服务器地址用于连接登录邮箱服务器3.方式一:smtplibsmtplib是Python自带的依赖库,可以直接导入使用首先,通过邮箱账号、授权码、邮箱服务器地址初始化一个SMTP实例,然后进行连接def__init__(self):#初始化self.smtp=smtplib.SMTP()#连接邮箱服务器地址self.smtp.connect('smtp.126.com')#加入主题和附件,邮件体self.email_body=MIMEMultipart('mixed')#发件人地址及授权码self.email_from_username='**@126.com'self.email_from_password='授权码'#登录self.smtp.login(self.email_from_username,self.email_from_password)12345678910111213141516然后,将收件人列表、邮件、邮件正文内容、附件路径及附件文件名加入到上面定义的邮件体中defgenerate_email_body(self,email_to_list,email_title,email_content,attchment_path,files):"""组成邮件体:paramemail_to_list:收件人列表:paramemail_title:邮件:paramemail_content:邮件正文内容:paramattchment_path:附件的路径:paramfiles:附件文件名列表:return:"""self.email_body['Subject']=email_titleself.email_body['From']=self.email_from_usernameself.email_body['To']=",".join(email_to_list)forfileinfiles:file_path=attchment_path+'/'+fileifos.path.isfile(file_path):#构建一个附件对象att=MIMEText(open(file_path,'rb').read(),'base64','utf-8')att["Content-Type"]='application/octet-stream'att.add_header("Content-Disposition","attachment",filename=("gbk","",file))self.email_body.attach(att)text_plain=MIMEText(email_content,'plain','utf-8')self.email_body.attach(text_plain)12345678910111213141516171819202122232425接着,就可以使用SMTP实例对象,将邮件发送出去#收件人列表email_to_list=['收件人1地址','收件人2地址']#发送邮件#注意:此处必须同时指定发件人与收件人,否则会当作垃圾邮件处理掉self.smtp.sendmail(self.email_from_username,email_to_list,self.email_body.as_string())123456邮件发送完毕之后,退出服务即可defexit(self):"""退出服务:return:"""self.smtp.quit()1234564.方式二:zmailZmail项目创建目的是,使邮件处理变得更简单使用Zmail发送接收邮件方便快捷,不需要手动添加服务器地址、端口以及适合的协议,可以轻松创建MIME对象和头文件注意:Zmail仅支持Python3,不支持Python2首先,安装依赖库#安装依赖库pip3installzmail12然后,使用邮箱账号、授权码创建一个邮箱服务对象classZMailObject(object):def__init__(self):#邮箱账号self.username='**@126.com'#邮箱授权码self.authorization_code='授权码'#构建一个邮箱服务对象self.server=zmail.server(self.username,self.authorization_code)1234567891011接着,将邮件主题、邮件内容、包含的附件路径加入到一个字典中,组成邮件主体#邮件主体mail_body={'subject':'测试报告','content_text':'这是一个测试报告',#纯文本或者HTML内容'attachments':['./attachments/report.png'],}123456最后,将调用send_mail()函数,将邮件发送出去即可#收件人#可以指定一个人,字符串;也可以是多个人,列表mail_to="收件人1"#发送邮件self.server.send_mail(mail_to,mail_body)1234565.方式三:yagmailya-gmail只需要几行代码,就能实现发送邮件的功能相比zmail,yagmail实现发送邮件的方式更加简洁优雅首先,安装依赖库#安装依赖库pip3installyagmail12然后,通过账号、授权码和服务器地址连接邮箱服务器,返回一个服务对象importyagmail#连接服务器#用户名、授权码、服务器地址yag_server=yagmail.SMTP(user='**@126.com',password='授权码',host='smtp.126.com')12345接着,通过send()函数,将邮件发送出去#发送对象列表email_to=['**@qq.com',]email_title='测试报告'email_content="这是测试报告的具体内容"#附件列表email_attachments=['./attachments/report.png',]#发送邮件yag_server.send(email_to,email_title,email_content,email_attachments)123456789邮件发送完毕之后,关闭连接即可#关闭连接yag_server.close()126.最后上面总结了Python发送邮件的3种方式,实际项目中,更推荐使用后两种方式这里给大家分享一份Python全套学习资料,包括学习路线、软件、源码、视频、面试题等等,都是我自己学习时整理的,希望可以对正在学习或者想要学习Python的朋友有帮助!CSDN大礼包:全网最全《全套Python学习资料》免费分享🎁😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓👉CSDN大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈​style=“margin:auto”/>1️⃣零基础入门①学习路线对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。②路线对应学习视频还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~③练习题每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!因篇幅有限,仅展示部分资料2️⃣国内外Python书籍、文档①文档和书籍资料3️⃣Python工具包+项目源码合集①Python工具包学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!②Python实战案例光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!③Python小游戏源码如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!4️⃣Python面试题我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。5️⃣Python兼职渠道而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。上述所有资料⚡️,朋友们如果有需要📦《全套Python学习资料》的,可以扫描下方二维码免费领取🆓😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓👉CSDN大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈​
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-26 14:13 , Processed in 0.825922 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表