龙空技术网

五分钟学会利用Python自动发送电子邮件,让繁琐的工作自动完成

嗨学python 1075

前言:

此时小伙伴们对“python发邮件带附件”大体比较关怀,各位老铁们都需要知道一些“python发邮件带附件”的相关内容。那么小编也在网络上汇集了一些有关“python发邮件带附件””的相关知识,希望大家能喜欢,看官们一起来学习一下吧!

收发邮件几乎是每个人每天都需要做的一件事情,对于一些固定每天需要发送的邮件或者是同时需要发送好几十好几百份的时候,我们可以考虑借助Python来自动发送邮件。

在利用Python进行发送邮件时主要借助smtplib和email两个模块,其中smtplib主要用来建立服务器链接、服务器断开的工作,而email模块主要用来设置一些与邮件本身相关的内容,比如收件人、发件人、主题之类的。

不同邮箱的服务器链接地址(官方名叫端口)不一样,大家根据自己使用的邮箱设置相应的服务器链接。如果是outlook企业邮箱的话,一般都是mail.xxx.com(xxx是你公司名字),具体的可以问公司的运维同事。

这里我们拿公共邮箱来举例,163邮箱还是相对比较常用的,所以这里就以163邮箱为例,给大家演示一下具体如何利用Python进行自动发送邮件。

在开始进行正式代码之前,需要先登陆自己的163邮箱进行授权设置,授权码设置如下:

点击设置中的POP3/SMTP/IMAP,勾选SMTP服务,根据提是进行授权码设置,设置授权成功后,在Python中利用授权码进行登陆,而不是你本来的邮箱密码,如果使用本来的邮箱密码登陆,会报错。

>>>import smtplib>>>from email import encoders>>>from email.header import Header>>>from email.mime.text import MIMEText>>>from email.utils import parseaddr, formataddr>>>from email.mime.application import MIMEApplication#发件人邮箱>>>asender="zhangjunhongdata@163.com"#收件人邮箱>>>areceiver="zhangjunhong@163.com"#抄送人邮箱>>>acc = 'zhangjunhong@qq.com'#邮件主题>>>asubject = '这是一份测试邮件' #发件人地址>>>from_addr = "zhangjunhongdata@163.com"#邮箱密码(授权码)>>>password="123data"#邮件设置>>>msg = MIMEMultipart()>>>msg['Subject'] = asubject >>>msg['to'] = areceiver >>>msg['Cc'] = acc >>>msg['from'] = "张俊红"#邮件正文内容>>>body = "你好,这是一份测试邮件"#添加邮件正文:>>>msg.attach(MIMEText(body, 'plain', 'utf-8'))#添加附件#注意这里的文件路径是斜杠>>>xlsxpart = MIMEApplication(open('C:/Users/zhangjunhong/Desktop/这是附件.xlsx', 'rb').read())>>>xlsxpart.add_header('Content-Disposition', 'attachment', filename='这是附件.xlsx')>>>msg.attach(xlsxpart) #设置邮箱服务器地址以及端口>>>smtp_server ="smtp.163.com">>>server = smtplib.SMTP(smtp_server, 25)>>>server.set_debuglevel(1)#登陆邮箱>>>server.login(from_addr, password)#发送邮件>>>server.sendmail(from_addr, >>>areceiver.split(',')+acc.split(','), msg.as_string())#断开服务器链接server.quit()

最后的结果如下图:

如果是需要同时发送多份邮件,可以把上述邮件发送过程定义成一个函数,把收件人以及其他内容生成一个列表,然后遍历每一个收件人,最后调用发送邮件函数进行多份邮件发送。

把邮件发送过程封装成一个函数相对比较简单,只需要把上述给单个人发送邮件的内容当成语句块,收件人当作参数即可,下面我们定义了一个名为send_mail的函数:

def send_mail(areceiver): 给单人发送邮件的代码

遍历发送每一个邮件实现如下:

#多个收件人列表receivers = ["zhangjunhongdata1@163.com1", "zhangjunhongdata2@163.com1", "zhangjunhongdata3@163.com1"]#开始遍历for r in receivers: send_mail(r)

关于自动发送邮件还有很多内容,比如定时发送,正文添加图片,附件添加图片,编写图形化界面,也就是自己写一个类似于outlook一样的邮件客户端都是可以的,本篇文章只是帮助大家打开自动发送邮件的大门,里面还有很多精彩的内容,大家有兴趣的可以自行上网搜索学习。

看完了这里可能还是会有些人不会弄,这些人你不用担心。准备了一些资料来帮助你学习,后台关注、私信小编‘01’就能免费获取下面的这些电子书籍。更有机会获得免费公开课听课的机会

标签: #python发邮件带附件