import sys
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.utils import parseaddr,formataddr
import datetime
#自定义发送显示
def _format_addr(s):
name,addr = parseaddr(s)
print(name)
print(addr)
return formataddr(
Header(name,'utf-8'))
#自定义显示发送日期
def _dateshow():
now=datetime.datetime.now()
delta=datetime.timedelta(days=-1)
n_days=now+delta
sendtime = n_days.strftime('%Y%m%d')
print(sendtime)
return sendtime
#自定义显示邮件主题
def _format_subject(s):
subshow,dateshow = parseaddr(s)
return formataddr(
Header(subshow,'utf-8'))
#发送邮件服务器
smtpserver = 'smtp.exmail.qq.com'
#发送邮箱用户名和密码
user = 'XXXX'
password = 'XXXX'
#发送邮箱
sender = 'xxxxx'
#接受邮箱
receiver = 'xxxx, xxx, xxxxx'
#抄送
acc= 'xx,xxx'
#创建一个带附件的实例
message = MIMEMultipart()
message['From'] = Header(u'XX部门','utf-8')
message['To'] = receiver
message['cc'] = acc
message['Subject'] = Header(u'%s-XXX日报明细表' % _dateshow(),'utf-8')
#邮件正文内容
text = "XXX日报明细数据请见附件:\n\n注:此邮件为自动生成,如数据有异常请联系XXX,谢谢!"
message.attach(MIMEText(text,'plain','utf-8'))
#构造附件1,传送当前目录下的text.txt文件
att1 = MIMEText(open('./text.xlsx','rb').read(),'base64','utf-8')
att1['Content-Type'] = 'application/octet-stream'
#这里的filename可以任意写,写什么名字 邮件中就显示什么名字
att1['Content-Disposition'] = 'attachment;filename="%s-testdata.xlsx"' %_dateshow()
message.attach(att1)
smtp = smtplib.SMTP()
smtp.connect(smtpserver,25)
smtp.login(user,password)
smtp.sendmail(sender,message['To'].split(',') + message['cc'].split(','),message.as_string())
smtp.quit()