码迷,mamicode.com
首页 > 编程语言 > 详细

Python logging smtplib 发邮件

时间:2014-10-13 18:27:31      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:blog   io   os   ar   for   sp   div   art   on   

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#File:mail_send.py

class Mail_Logger():
    mailLogger = None
    def __init__(self,conf_file,name):
        import logging,logging.config
        logging.config.fileConfig(conf_file)
        #create logger
        self.mailLogger = logging.getLogger(name)
        self.mailLogger.setLevel(logging.NOTSET)

    def info(self,message):
        self.mailLogger.info(message)

    def error(self,message):
        self.mailLogger.error(message)
    #DEBUG, WARNING, CRITICAL
"""
if login return [True,server]
else returm [False,exception]
"""
def login_mail(servInfo):
    import smtplib
    mail_host = servInfo["hostName"]
    mail_user = servInfo["userName"]
    mail_pass = servInfo["password"]
    try:
        server = smtplib.SMTP()
        server.connect(mail_host)
        server.login(mail_user,mail_pass)
        #log 
        return [True,server]
    except Exception,e:
        print(str(e))
        #log exit
        return [False,str(e)]

def send_mail(log_mail,server,fro,to_list,sub,content,subtype="plain",charset="utf-8"):
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    content = MIMEText(content,_subtype=subtype,_charset=charset)
    msg = MIMEMultipart()
    msg[‘Subject‘] = sub
    msg["From"] = fro
    if isinstance(to_list,type([])):
        msg["To"]=";".join(to_list)
    elif isinstance(to_list,type("")):
        msg[‘To‘] =to_list
    else:
        log_mail("邮件地址格式错误,请正确填写!")
        exit()
    msg.attach(content)
    #log_mail = Mail_Logger("logging.conf","mail_log")
    try:
        server.sendmail(fro,to_list,msg.as_string())
        if isinstance(to_list,type([])):
            for to in to_list:
                log_mail.info("发送成功!"+" "+str(to))
        else:
            log_mail.info("发送成功!"+" "+str(to_list))
        return True
    except Exception,e:
        #log
        log_mail.error("发送错误!"+" " +str(to_list)+":"+str(e))
        return False

def close_mail(server):
    server.close()

if __name__ == ‘__main__‘:
    servInfo = {}
    servInfo["hostName"] = ‘smtp.126.com‘
    servInfo["userName"] = "username"
    servInfo["password"] = "paassword"
    fro = servInfo["userName"] + "@" +".".join(servInfo["hostName"].split(".")[1:])
    server=login_mail(servInfo)
    to_list = "344164864@qq.com"
    #to_list = ["344164864@qq.com",]
    sub = "test subject"
    content = "testContent" 
    log_conf = "logging.conf"
    log_name = "mail_log"
    #subtype = "palin html"
    #charset = "utf-8"
    #send_mail(logger,server[1],fro,to_list,sub,content(,subtype(,charset)))
    if server[0]:
        logger = Mail_Logger(log_conf,log_name)
        result = send_mail(logger,server[1],fro,to_list,sub,content)
    else:
        print server[1]
    close_mail(server[1])

在同个目录下  

logging.conf:

[loggers]
keys=root,example

[handlers]
keys=consoleHandler,rotateFileHandler

[formatters]
keys=simpleFormatter

[formatter_simpleFormatter]
format=[%(asctime)s](%(levelname)s)%(name)s: %(message)s

[logger_root]
level=DEBUG
handlers=consoleHandler,rotateFileHandler

[logger_example]
level=DEBUG
handlers=consoleHandler,rotateFileHandler
qualname=example
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)

[handler_rotateFileHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=(‘mailSend.log‘,‘a‘,200000,9)

  

Python logging smtplib 发邮件

标签:blog   io   os   ar   for   sp   div   art   on   

原文地址:http://www.cnblogs.com/jachin/p/4022394.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!