Python自动化报表发送

公司的报表做出来以后需要发送给同事,特别是日报,发送频率高,现在用Python实现自动发送邮件。
利用Python发送邮件时主要借助smtplib和email两个模块,其中smtplib主要用来建立和断开与服务器连接的工作,而email模块主要用来设置一些与邮件本身相关的内容,比如收件人、发件人、主题。
不同邮箱的服务器连接地址不一样,大家根据自己使用的邮箱设置相应的服务器连接。
163 邮箱在国内比较常用,所以这里以163邮箱为例给大家演示一下如何利用Python自动发送邮件。
在开始进行正式的代码编写之前,需要先登录163邮箱进行授权码设置,单击设置中的POP3/SMTP/MAP,勾选POPISMTP服务和MAP/SMTP服务两项的复选框,根据提示进行授权码设置,设置成功后就可以在Pyton中利用授权码登录。

代码如下

import smtplib
from email import encoders
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import parseaddr,formataddr
from email.mime.application import MIMEApplication

#日报的日期,每天修改
n=str(20200508)

#发件人邮箱
asender='阿宇君的发件箱@163.com'
#收件人邮箱
areceiver='阿宇君的收件箱@qq.com'
#抄送人邮箱
acc='[email protected]'

#邮件设置
asubject='这是一份测试邮件1'

#发件人地址
from_addr='阿宇君@163.com'
#邮箱授权码,非邮箱密码
password='阿宇君pass123'

#邮箱设置
msg=MIMEMultipart()
msg['Subject']=asubject
msg['to']=areceiver
msg['Cc']=acc
msg['from']='阿宇君' #发件人信息

#邮件正文
boby='你好,这是测试邮件的正文'
#添加邮件正文
msg.attach(MIMEText(boby,'plain','utf-8'))
#添加附件
xlsxpart=MIMEApplication(open('E:/日报/'+n+'/'+n+'.xlsx','rb','rb').read())
xlsxpart.add_header('Content-Disposition',
                   'attachment',
                   filename='日报-'+n+'.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()
print('已发送邮件')

你可能感兴趣的:(Python学习笔记,python,数据分析,自动化办公)