python发邮件带excel附件

版权声明:欢迎评论,指点,交流! https://blog.csdn.net/qq_15230053/article/details/82987198

# encoding=utf-8
from sqlalchemy import create_engine
import pymysql
import datetime
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
import smtplib #SMTP简单邮件传输协议,Python简单封装成了一个库
import traceback
from email.mime.application import MIMEApplication


sql = 'select * from syw_bulk.area_code limit 10;'
engine=create_engine('mysql+pymysql://sy_ect:[email protected]:3306/syw_bulk?charset=utf8')
try:
    df = pd.read_sql(sql, con=engine)
    print('链接mysql送成功!')
    df.to_excel(r'C:/Users/SheYuanWang/Desktop/数据.xlsx')
except Exception:
    print('链接mysql失败!')


def create_email(email_from,email_to,email_Subject,email_text,annex_path,annex_name):
    message=MIMEMultipart()
    message.attach(MIMEText(email_text,'plain','utf-8'))
    message['From']=Header(email_from,'utf-8')
    message['To']=Header(email_to,'utf-8')
    message['Subject']=Header(email_Subject,'utf-8')
    filepath='C:/Users/SheYuanWang/Desktop/数据.xlsx'
    basename = "账本.xlsx"
    xlsxpart = MIMEApplication(open(filepath, 'rb').read())
    xlsxpart.add_header('Content-Disposition', 'attachment', filename=('gbk', '', basename))#注意:此处basename要转换为gbk编码,否则中文会有乱码。
    message.attach(xlsxpart)
    return message


def send_email(sender,password,receiver,msg):
    try:
        server=smtplib.SMTP_SSL('smtp.exmail.qq.com',465)
        server.ehlo()
        server.login(sender,password)
        server.sendmail(sender,receiver,msg.as_string())
        print('邮件发送成功!')
        server.quit()
    except Exception:
        print(traceback.print_exc()) #Python使用traceback.print_exc()来代替print e 来输出详细的异常信息,traceback.print_exc()与print traceback.format_exc()效果是一样的,format_exc()返回字符串,print_exc()则直接给打印出来,print_exc()还可以接受file参数直接写入到一个文件,print_exc()还可以接受file参数直接写入到一个文件
        print('邮件发送失败!')


def main():
    yesterdaystr=yesterday=datetime.date.today()-atetime.timedelta(days=1)
    my_file_name='数据.xlsx'
    file_path=r'C:/Users/SheYuanWang/Desktop/数据.xlsx'
    my_email_from='大数据风控部自动报表发送组'
    my_email_to='常小楠'
    my_email_Subject='user'+str(yesterdaystr)
    my_email_text='Dear all,附件为所需数据,请查收,祝好!大数据风控部自动报表发送组'
    my_annex_path=file_path
    my_annex_name=my_file_name
    my_msg=create_email(my_email_from,my_email_to,my_email_Subject,my_email_text,my_annex_path,my_annex_name)
    my_sender='[email protected]'
    my_password='Sywcyn123456'
    my_receiver=['[email protected]'] #接收人邮箱列表
    send_email(my_sender,my_password,my_receiver,my_msg)
if __name__=='__main__':
    main()
 

猜你喜欢

转载自blog.csdn.net/qq_15230053/article/details/82987198