邮件

1、简单发送

settings.py配置:

import os
import sys,string
from bin.start import BASE_DIR # 日志存放地址
RUN_LOG_FILE = os.path.join(BASE_DIR,'log','run.log')
ERROR_LOG_FILE = os.path.join(BASE_DIR,'log','error.log') # 邮件配置
SENDER = 'lianzhilei@yeah.net' # 发送邮件账号
RECEIVER = ['185130485@qq.com','593089304@qq.com','liuyufei@jcrb.com','lianzhilei0711@163.com',] # 接收邮件账号 多个接收账号用列表括起来[] # RECEIVER = 'lianzhilei0711@163.com' # 接收邮件账号
SMTPSERVER = 'smtp.yeah.net' # 发送邮件smtp地址
PASSWORD = 'lzl182105328' # 此为授权码需登录到邮件上设置 # 检索目录配置
DIRNAME = '/data/TRS/TRSWAS5.0/Tomcat/webapps/'
TIME = 1 #最近一天

mail.py邮件主体:

import smtplib
import traceback
from email.mime.text import MIMEText
from email.header import Header from config import settings
from lib.log import Logger def send_mail(subject,message):
'''
发送邮件
:param subject: 邮件标题
:param message: 邮件内容
:return:
'''
sender = settings.SENDER
receiver = settings.RECEIVER
smtpserver = settings.SMTPSERVER
password = settings.PASSWORD
print(receiver)
msg = MIMEText(message, 'plain', 'utf-8') # 第二个参数用plain!!不要用text!!不然报554错误
msg['Subject'] = Header(subject, 'utf-8') # 必须设置
msg['From'] = '正义检索报告<%s>'%sender # 必须设
msg['To'] = ",".join(receiver) # 必须设置 try:
smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(sender, password)
smtp.sendmail(sender, receiver, msg.as_string(),rcpt_options=receiver)
smtp.quit()
msg = '邮件发送成功'
Logger().log(msg, True)
except Exception as e:
msg = traceback.format_exc()
Logger().log(msg,False)
#!/usr/bin/env python
# -*- coding:utf- -*- import sys
import logging
import os
from config import settings class Logger(object):
__instance = None def __init__(self):
self.run_log_file = settings.RUN_LOG_FILE
self.error_log_file = settings.ERROR_LOG_FILE
self.run_logger = None
self.error_logger = None self.initialize_run_log()
self.initialize_error_log() def __new__(cls, *args, **kwargs): # 单例模式
if not cls.__instance:
cls.__instance = object.__new__(cls, *args, **kwargs)
return cls.__instance @staticmethod
def check_path_exist(log_abs_file):
log_path = os.path.split(log_abs_file)[]
if not os.path.exists(log_path):
os.mkdir(log_path) def initialize_run_log(self):
self.check_path_exist(self.run_log_file)
file_1_1 = logging.FileHandler(self.run_log_file, 'a', encoding='utf-8')
fmt = logging.Formatter(fmt="%(asctime)s - %(levelname)s : %(message)s")
file_1_1.setFormatter(fmt)
logger1 = logging.getLogger('run_log') # 'run_log' 随意写
logger1.setLevel(logging.INFO) # 效果与error里logging.Logger一样
logger1.addHandler(file_1_1)
self.run_logger = logger1 def initialize_error_log(self):
self.check_path_exist(self.error_log_file)
file_1_1 = logging.FileHandler(self.error_log_file, 'a', encoding='utf-8')
fmt = logging.Formatter(fmt="%(asctime)s - %(levelname)s : %(message)s")
file_1_1.setFormatter(fmt)
logger1 = logging.Logger('run_log', level=logging.ERROR)
logger1.addHandler(file_1_1)
self.error_logger = logger1 def log(self, message, mode=True):
"""
写入日志
:param message: 日志信息
:param mode: True表示运行信息,False表示错误信息
:return:
"""
if mode:
self.run_logger.info(message)
else:
self.error_logger.error(message)

log.py文件

  

  

  

最新文章

  1. Python之路【第十一篇续】前端初识之CSS
  2. Protocol Buffers动态消息解析
  3. 腾讯即时聊天sdk
  4. Scala学习之: Hello Word!
  5. c#获取网页内容的三种方法
  6. java创建Date日期时间笔记
  7. Linux 内核模块设计
  8. jQuery Mobile里xxx怎么用呀?(控件篇)
  9. Windows server 2008下开启telnet功能
  10. find job
  11. c++到c#数据类型的转换
  12. PHP - session编码和解码
  13. HDU 4350 Card
  14. 促销R语言应用性能
  15. C++ 编译报错discards qualifiers [-fpermissive]
  16. DirectDraw用到的DDSURFACEDESC2
  17. 【原创】MySQL(Innodb)索引的原理
  18. Java多线中基础知识整理
  19. 【python-strip】Python strip()方法
  20. 《Two Dozen Short Lessons in Haskell》(二十四)代数类型

热门文章

  1. smrt analysis 软件安装
  2. Nginx的启动与停止,重启
  3. JQuery元素控制方法汇总
  4. opengl 模板测试 glStencilOp glStencilFunc
  5. 码农小汪-Hibernate学习8-hibernate关联关系注解表示@OneToMany mappedBy @ManyToMany @JoinTable
  6. Mysql课后思考题
  7. mongoDB在windows64上安装
  8. osgEarth的agglite插件使用例子feature_rasterize.earth
  9. ajax操作的链式写法
  10. poj2096 Collecting Bugs[期望dp]