【Python】一鍵式發郵件小指令碼
工作中涉及到給客戶定時發郵件,這裡提供一個Python小指令碼,單獨放進一個py小檔案,每次用時import一下非常簡單方便。
# !/usr/bin/python # -*- coding: utf-8 -*- # # create_author: (JAVA COE_OPS TEAM)[email protected] # create_time : 2016-10-10 # NOTICE : *_*mail config*_* # # import logging import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart # # # class obj class Mail(): def __init__(self, msg_from, msg_to, msg_subject, text, path_file, host, port, user, password): self.msg_from = msg_from # 發件箱——————"" self.msg_to = msg_to # 收件箱——————["",""] self.msg_subject = msg_subject # 郵件主題————"" self.text = text # 郵件正文————"" self.path_file = path_file # 郵件附件————[{"path" : "", "name" : ""}, {"path" : "", "name" : ""}] self.host = host # 伺服器——————"smtp.163.com" self.port = port # 埠號——————25 self.user = user # 發件箱使用者———"" self.password = password # 發件箱密碼————"" # def __str__(self): tranceback = "An e-mail from \"%s\" to \"%s\" under subject of \"%s\"…………" % (self.msg_from, self.msg_to, self.msg_subject) return tranceback # def csmail(self): msg = MIMEMultipart() try: msg['from'] = self.msg_from msg['to'] = ','.join(self.msg_to) # because of a BUG of smtplib msg['subject'] = self.msg_subject msg.attach(MIMEText(self.text)) if self.path_file: for i in self.path_file: msg_attach = MIMEText(open(i['path'], "rb").read(), "base64", "utf-8") attach_name = i['name'] msg_attach.add_header("Content-Disposition", "attachment", filename=attach_name) msg_attach["Content-Type"] = "application/octet-stream" msg.attach(msg_attach) except Exception, e: logging.error("create email under subject \"%s\" failed! Detail: %s" % (self.msg_subject , e)) exit() ser = smtplib.SMTP() try: ser.connect(host=self.host, port=self.port) ser.login(user=self.user, password=self.password) ser.sendmail(msg['from'], self.msg_to, msg.as_string()) ser.quit() except Exception, e: logging.error("send email under subject \"%s\" failed! Detail: %s" % (self.msg_subject , e)) exit()
以下是一個小示例。
MSG = {"msg_from" : "……@163.com",
"msg_to" : ["……@qq.com", "……@…….com"],
"msg_subject" : "Hello收件人",
"text" : "測試郵件(generate by Python2.7.12)",
"path_file" : [{"path" : moudle_base.rount() + "附件1" + moudle_base.curtime() + ".xlsx",
"name" : "附件1" + moudle_base.curtime() + ".xlsx" },
{"path" : moudle_base.rount() + "附件2" + moudle_base.curtime() + ".xlsx",
"name" : "附件2" + moudle_base.curtime() + ".xlsx"}],
"host" : "smtp.163.com",
"port" : 25,
"user" : "……",
"password" : "……"
}
mail = Mail(**MSG)
print(mail)
mail.csmail()