| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- # coding:utf-8
- # !/user/bin/python2
- """
- 邮件发送模块
- """
- import time
- import json
- import logging
- from functools import partial
- import threading
- import requests
- import traceback
- from email.header import Header
- from email.MIMEText import MIMEText
- from email.utils import parseaddr,formataddr
- import smtplib,time,os
- from aliyun_email import AliEmailClient
- logger = logging.getLogger(__name__)
- Settings = type('Settings', (object, ),
- {'EMAIL_URL': 'https://182.138.102.104/push-gateway/v1/push',
- 'EMAIL_USER': 'mail.cetcsc.com',
- 'EMAIL_PASSWD': '30sanpush'})
- class EmailClient(object):
- """
- 邮件客户端
- """
- def __init__(self, url, user, passwd):
- self.url = url
- self.user = user
- self.passwd = passwd
- #def send(self, to, subject, content):
- # """
- # 发送邮件
- # :params
- # to: 邮件列表
- # subject: 主题
- # content: 内容
- # """
- # auth = requests.auth.HTTPDigestAuth(self.user, self.passwd)
- # data = self._gen_content(to, subject, content)
- # logger.info("send email, raw data: %s", str(data))
- # try:
- # r = requests.post(self.url, json=data, auth=auth, verify=False)
- # print r.json()
- # except Exception as e:
- # print e
- # return False,str(e)
- # if r.status_code != requests.codes.OK:
- # return False,r.json()
- # try:
- # logger.info('send email response: %s', str(r.text))
- # ret = r.json()
- # if ret['mail']['code'] != '0':
- # logger.error("send email failed, reason: %s ", str(ret))
- # return False,ret
- # except Exception as e:
- # return False,str(e)
- # return True,"success"
- #def send(self,to,subject,content):
- # """
- # """
- # from_addr = "cetcsc_swad@163.com"
- # password = "AXN4zwIoCd"
- # smtp_server = "smtp.163.com"
- # #自定义处理邮件收发地址的显示内容
- # def _format_addr(s):
- # name,addr = parseaddr(s)
- # #将邮件的name转换成utf-8格式,addr如果是unicode,则转换utf-8输出,否则直接输出addr
- # return formataddr((\
- # Header(name,'utf-8').encode(),\
- # addr.encode("utf-8") if isinstance(addr,unicode) else addr))
- # #邮件正文是MIMEText
- # msg = MIMEText(content,'html','utf-8')
- # #邮件对象
- # msg['From'] = _format_addr(u'网络监测预警事业部 <%s>'%from_addr)
- # #msg['to'] = _format_addr(u'管理员<%s>'%to)
- # msg['Subject'] = Header(subject,'utf-8').encode()
- # msg['date'] = time.strftime("%a,%d %b %Y %H:%M:%S %z")
- # #发送邮件
- # try:
- # server = smtplib.SMTP(smtp_server,25)
- # #server.set_debuglevel(1)
- # server.login(from_addr,password)
- # server.sendmail(from_addr,to,msg.as_string())
- # server.quit()
- # except Exception as e:
- # return False,str(e)
- # return True,"success"
- def send(self,to,subject,content):
- """
- """
- aliemail_client = AliEmailClient()
- to = to[0] if isinstance(to,type([])) else to
- res = aliemail_client.send_mail(to,subject,content)
- if res and res.get("RequestId") and res.get("EnvId"):
- return True,"success"
- else:
- return False,res.get("Message","fail") if res else "fail"
- def _gen_content(self, to, subject, content):
- data = {
- "emails": to,
- "title": subject,
- "body": {
- "textHTML": content
- }
- }
- return data
- email_client = EmailClient(Settings.EMAIL_URL, Settings.EMAIL_USER, Settings.EMAIL_PASSWD)
- if __name__ == '__main__':
- #测试
- to = ["scxiaojincai@163.com"]
- to = "496498291@qq.com"
- subject = u"删除提醒"
- content = u"网站{www.test1.com}在2018-08-30 15:30:10 被用户{xxx}删除,云防御系统将无法继续提供安全防护服务,请予以关注!"
- email_client.send(to,subject,content)
|