python邮件发送脚本
2010-09-28 15:02
399 查看
#!/usr/bin/python #coding=utf-8 #@author:dengyike #@date:2010-09-28 #@version:1.0 #@description: auto sending email with attachment file import email import mimetypes from email.MIMEMultipart import MIMEMultipart from email.MIMEText import MIMEText from email.MIMEImage import MIMEImage import smtplib import logging import sys reload(sys) sys.setdefaultencoding('utf8') mailDict = {} #邮件配置信息 ################### #日志辅助类 ################# class Logger: LOG_RELEASE= "releae" LOG_RELEASE_FILE = "/tmp/pyMail.log" def __init__(self, log_type): self._logger = logging.getLogger(log_type) if log_type == Logger.LOG_RELEASE: self._logFile = Logger.LOG_RELEASE_FILE handler = logging.FileHandler(self._logFile) if log_type == Logger.LOG_RELEASE: formatter = logging.Formatter('%(asctime)s ********* %(message)s') else: formatter = logging.Formatter('%(message)s') handler.setFormatter(formatter) self._logger.addHandler(handler) self._logger.setLevel(logging.INFO) def log(self, msg): if self._logger is not None: self._logger.info(msg) MyLogger = Logger(Logger.LOG_RELEASE) #Logger def initMailConf():#初始化邮件配置信息 global mailDict mailDict['server'] = "smtp.google.com" mailDict['user'] = "dengyike" mailDict['password'] = "dengyike" mailDict["from"] = "dengyike@google.com" mailDict["cc"] = "dengyike@google.com,phinecos@google.com" mailDict["to"] = "dengyike@google.com" mailDict["subject"] = "python邮件脚本测试" mailDict["text"] = "这里是普通文本信息" mailDict["html"] = '<font color = red ><b>这里是HTML文本信息</b></font>' def sendMail(paramMap):#发送邮件 smtp = smtplib.SMTP() msgRoot = MIMEMultipart('related') msgAlternative = MIMEMultipart('alternative') if paramMap.has_key("server") and paramMap.has_key("user") and paramMap.has_key("password"): try: smtp.set_debuglevel(1) smtp.connect(paramMap["server"]) smtp.login(paramMap["user"], paramMap["password"]) except Exception, e: MyLogger.log("smtp login exception!") return False else: MyLogger.log("Parameters incomplete!") return False if paramMap.has_key("subject") == False or paramMap.has_key("from")== False or paramMap.has_key("to") == False: MyLogger.log("Parameters incomplete!") return False msgRoot['subject'] = paramMap["subject"] msgRoot['from'] = paramMap["from"] if paramMap.has_key("cc"): msgRoot['cc'] = paramMap["cc"] msgRoot['to'] = paramMap["to"] msgRoot.preamble = 'This is a multi-part message in MIME format.' msgRoot.attach(msgAlternative) TempAddTo = paramMap["to"] if paramMap.has_key("text"): msgText = MIMEText(paramMap["text"], 'plain', 'utf-8') msgAlternative.attach(msgText) if paramMap.has_key("html"): msgText = MIMEText(paramMap["html"], 'html', 'utf-8') msgAlternative.attach(msgText) if paramMap.has_key("image"): fp = open(paramMap["image"], 'rb') msgImage = MIMEImage(fp.read()) fp.close() msgImage.add_header('Content-ID', '<image1>' ) msgRoot.attach(msgImage) if paramMap.has_key("cc"): TempAddTo = paramMap["to"] + "," + paramMap["cc"] if TempAddTo.find(",") != -1: FinallyAdd = TempAddTo.split(",") else: FinallyAdd = TempAddTo #构造附件 fileName = "/tmp/test.zip" basename = os.path.basename(fileName) if os.path.exists(fileName): #数据文件存在 data = open(fileName, 'rb') att = MIMEText(data.read(), 'base64', 'gb2312') att["Content-Type"] = 'application/octet-stream' att["Content-Disposition"] = 'attachment; filename="%s"' % basename msgRoot.attach(att) smtp.sendmail(paramMap["from"], FinallyAdd, msgRoot.as_string()) smtp.quit() return True def process(): global mailDict initMailConf() sendMail(mailDict) if __name__ == "__main__": process()
最后把运行命令加入crontab中,就可以每天定时自动发送邮件了。
相关文章推荐
- 一个python的邮件发送脚本,自动,定时,可以附件发送,抄送,附有说明文件 (本脚本是python的2.7.x环境下可用)
- zabbix 发送邮件脚本(python shell)
- python发送邮件的脚本
- python脚本发送普通邮件
- python监控脚本,监控CPU,磁盘报警时发送邮件
- 发送邮件的python脚本
- Tomcat错误日志发送邮件(python)脚本
- centos 7 keepalived故障邮件通知实战(附Python邮件发送脚本)
- python邮件发送脚本
- 发送邮件的python脚本[zt]
- 使用gmail发送邮件的Python脚本
- centos 7 keepalived故障邮件通知实战(附Python邮件发送脚本)
- python脚本发送报警邮件
- 使用python脚本发送邮件
- 一个python的邮件发送脚本,自动,定时,可以附件发送,抄送,附有说明文件
- zabbix利用python脚本发送报警邮件的方法
- python脚本发送邮件
- python发送邮件脚本
- python发送邮件脚本(支持多个附件,中文)
- python脚本用来nagios发送邮件