Python logging smtplib 发邮件

#!/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 = "[email protected]"
    #to_list = ["[email protected]",]
    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)

  

时间: 2024-10-09 10:31:26

Python logging smtplib 发邮件的相关文章

Python自定义任务发邮件提醒

前言 在工作中,有时会有一些定期需要执行的任务或在将来某一天需要执行的任务,为避免疏漏,设计个小工具,发邮件提醒自己去处理. 方案简介 1.建立一个Excel文件,里面定义好待提醒的任务 2.建立一个记事本文件,里面输入待接收邮件的邮箱账号 3.采用Python编写代码,读取Excel文件,检查是否该发送提醒邮件,如果需要提醒,则发出邮件给接收人. 4.把python编写的代码,打包成exe可执行文件 5.采用Windows的定时任务作业,调度打包好的exe文件 详细方案: 1.Excel名称:

SNMPv3/pygal制图/smtplib发邮件

SNMPv3 SNMPv3在路由器端的配置 这个我都没配置过,还得现学现卖这个链接说的是SNMPv3的基本配置 这个链接说的是SNMPv3的view命令,用于管理员可以看到哪些层级的内容 1) 配置 snmp-server group READONLY v3 priv read VIEWSTD access 98 snmp-server view VIEWSTD iso included snmp-server community galileo RO 98 snmp-server user <

python使用SMTP发邮件时使用Cc(抄送)和Bcc(密送)

SMTP发送邮件的时候,并没有特殊的通信语句告诉邮件服务器 谁是主送,谁是抄送/密送,这三个角色都是以同样的方式告诉邮件服务器的,然后重点在邮件内容里. 邮件内容分为头和体两部分(就像http),头部包含了各种meta信息,其中说明了谁要用to,谁要cc,谁要bcc. 一个典型的带to和bcc的邮件发送过程debug日志如下: send: 'ehlo E42.lan\r\n' reply: b'250-smtp.qq.com\r\n' reply: b'250-PIPELINING\r\n' r

python中关于发邮件的示例

发送邮件示例代码如下: from WebUtils import ProperitiesLoad from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import smtplib import os class Sendmails(): ''' 发送带附件的邮件,首先要创建MIMEMultipart()实例,然后构造附件, 如果有多个附件,可依次构造,最后利用smtplib.smt

python编码发邮件

下面为使用python编写的发邮件的代码,注意,代码中的password不是邮箱的密码,而是客户端授权代码.获取客户端授权代码,以163邮箱为例:设置-常规设置-客户端授权密码. from email.mime.text import MIMEText from email.header import Header  subject = 'python email test'   msg = MIMEText('数据库中有内容更新,请及时查看', 'plain', 'utf-8') msg['S

【Python】 发邮件用 smtplib &amp; email

■ smtplib & email ■ 概述 发邮件主要用到smtplib以及email模块.stmplib用于邮箱和服务器间的连接,发送的步骤.email模块主要用于处理编码,邮件内容等等.主要是参考了那个发报表的脚本,简单记录了下最简单的用法,没啥参考价值= = ■ smtplib基本用法 smtp = smtplib.SMTP() #建立smtp对象 smtp.connect('server',port) #建立与smtp服务器的连接 smtp.login('user','password

【Python系列】Python自动发邮件脚本

缘起 这段时间给朋友搞了个群发邮件的脚本,为了防止进入垃圾邮件,做了很多工作,刚搞完,垃圾邮件进入率50%,觉得还不错,如果要将垃圾邮件的进入率再调低,估计就要花钱买主机了,想想也就算了,先发一个月,看看效果再拓展吧. 脚本主要是通过Python写的,调的smtplib库,这些是基础,大家在网上一搜一大堆,今天主要给大家讲解下如何避免进入垃圾邮件系统,以及整个系统搭建时的一些思想.可能刚搞Python不久,有很多可能是错误的写法望大家提出来哈~ 配置 CentOS7.0系统 Python 3.4

python-发邮件脚本

折腾nagios发邮件好几天,终于完成,我的系统环境是ubuntu12.04,安装postfix服务,先贴上脚本,如下: #!/usr/bin/env python#-*- coding:utf-8 -*-''' from: 改成你的邮箱地址 '''import datetime,smtplib,string,sysfrom email.Header import Headerfrom email.MIMEText import MIMETextfrom email.MIMEMultipart

python实现发邮件(sendmail.py )

#!/usr/bin/python #-*-coding:utf-8-*- #-*-coding:utf-8-*- #filename :sendmail.py import sys import smtplib from email.mime.text import MIMEText from email.header import Header from email.mime.multipart import MIMEMultipart from email import Utils imp