导出的excel作为附件通过邮件发送给收件人

#! /bin/env python
# encoding: utf-8
import datetime
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header

from_addr = 'xx@qq.cn'
password = 'xxx'

to_addr = 'xx@qq.cn'

smtp_server = 'smtp.qq.com'
#创建一个带附件的实例
def send_mail(filename):
    file_path="/root/scripts/{}".format(filename)
    format_day = filename.split('.')[0]
    message = MIMEMultipart()
    message['From'] = Header("xxx", 'utf-8')
    message['To'] =  Header("测试", 'utf-8')
    subject = '数据_{}'.format(format_day)
    message['Subject'] = Header(subject, 'utf-8')
    #邮件正文内容
    message.attach(MIMEText('附件是', 'plain', 'utf-8'))
 
    # 构造附件1,传送当前目录下的 test.txt 文件
    att = MIMEText(open(file_path, 'rb').read(), 'base64', 'utf-8')
    att["Content-Type"] = 'application/octet-stream'

    # 这里的filename可以任意写,写什么名字,邮件中显示什么名字,这里必须写,不然附件名字很奇怪
    att["Content-Disposition"] = 'attachment; filename={}'.format(filename)
    message.attach(att)

    server = smtplib.SMTP_SSL()
    server.connect(smtp_server,465)
    server.login(from_addr, password)
    server.sendmail(from_addr, to_addr, message.as_string())
    server.quit()

if __name__ == '__main__':
    filename = "{}.xls".format((datetime.datetime.now() + datetime.timedelta(days=-1)).strftime("%Y%m%d"))
    send_mail(filename)

 

posted @ 2021-12-11 23:12  屠魔的少年  阅读(5)  评论(0)    收藏  举报