直接上代碼
郵件信息類
#!/usr/bin/env python
# encoding: utf-8
'''
@author: fengtao.xue
@license: (C) Copyright 2016-2019, GAUSSCODE.
@contact: fengtao.xue@gausscode.com
@software:
@file: mailUtils.py
@time: 2019/4/11 15:33
@desc:
'''
import configparser
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
class MailInfo:
sender = ''
recivers = ''
subject = ''
msgfrom = ''
msgto = ''
smtphost = ''
def __init__(self, sender, recivers, subject, msgfrom, msgto, smtphost):
self.sender = sender
self.recivers = recivers
self.subject = subject
self.msgfrom = msgfrom
self.msgto = msgto
self.smtphost = smtphost
'''發(fā)送郵件'''
def send(self,rptType, msg, file):
print('sending email...')
# 創(chuàng)建一個(gè)帶附件的實(shí)例
message = MIMEMultipart()
message['From'] = Header(self.msgfrom, 'utf-8')
message['To'] = Header(self.msgto, 'utf-8')
message['Subject'] = Header(self.subject + rptType, 'utf-8')
# 郵件正文內(nèi)容
message.attach(MIMEText(msg, 'plain', 'utf-8'))
# 構(gòu)造附件
att1 = MIMEText(open(file, 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
# 這里的filename為郵件中附件名
filename = file.split("/")[-1]
# 附件名稱為中文時(shí)的寫(xiě)法
att1.add_header("Content-Disposition", "attachment", filename=("gbk", "", filename))
# 附件名稱非中文時(shí)的寫(xiě)法
# att1["Content-Disposition"] = 'attachment; filename="%s"'% (filename)
message.attach(att1)
# 發(fā)送郵件
try:
smtpObj = smtplib.SMTP(self.smtphost)
smtpObj.sendmail(self.sender, self.recivers, message.as_string())
print("Info: send email successfully")
except smtplib.SMTPException:
print("Error: send email failed")
初始化郵件信息
def init():
print('init MailInfo...')
cf = configparser.ConfigParser()
cf.read('./config.ini',encoding="utf-8-sig")
sender = cf.get("mail-info", "SEMDER")
recivers = cf.get("mail-info", "RECEIVERS").split(',')
subject = cf.get("mail-info", "SUBJECT")
msgfrom = cf.get("mail-info", "MSGFROM")
msgto = cf.get("mail-info", "MSGTO")
smtphost = cf.get("mail-info", "SMTPHOST")
return MailInfo(sender, recivers, subject, msgfrom, msgto, smtphost)
mian函數(shù)
if __name__ == '__main__':
rptType = '周報(bào)SMTP測(cè)試'
msg = '這是Python 郵件發(fā)送測(cè)試……'
file = '../output/報(bào)表_2019-01-01_2019-01-31.xls'
mailInfo = init()
mailInfo.send(rptType, msg, file)
config.ini文件
[mail-info]
SEMDER=xft0809@163.com
RECEIVERS=fengtao.xue@gausscode.com
SUBJECT = 報(bào)表服務(wù)
MSGFROM = 技術(shù)部
MSGTO = 運(yùn)營(yíng)部
SMTPHOST = localhost