email_util.py 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. # coding=utf-8
  2. from email.mime.text import MIMEText
  3. from email.header import Header
  4. from smtplib import SMTP
  5. from email.mime.multipart import MIMEMultipart
  6. from email.mime.base import MIMEBase
  7. from email.encoders import encode_base64
  8. import traceback
  9. import os, random, sys, requests
  10. from requests_toolbelt.multipart.encoder import MultipartEncoder
  11. # https://blog.csdn.net/chuxu8314/article/details/100618710
  12. # https://blog.csdn.net/Angry_Mills/article/details/79067270
  13. class EmailUtil(object):
  14. host_server = 'smtp.exmail.qq.com'
  15. sender_email = 'data_service@elab-plus.com'
  16. pwd = 'elab@123A'
  17. send_name = 'elab'
  18. receiver = ['1285211525@qq.com', 'lijm@elab-plus.com', 'xuanxc@elab-plus.com']
  19. # 线上
  20. url_online = "http://dm-api.elab-plus.cn/elab-marketing-sms//mail/sendEmailForReport"
  21. # 开发环境
  22. url_dev = "http://43.254.221.77:5555/elab-marketing-sms//mail/sendEmailForReport" # 接口地址
  23. # 测试环境
  24. url_test = "http://gatewaytest.elab-plus.com/elab-marketing-sms//mail/sendEmailForReport"
  25. url = url_dev
  26. # 消息头数据
  27. headers = {
  28. 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36',
  29. 'Referer': url,
  30. }
  31. def __init__(self):
  32. pass
  33. def send_mail(self,
  34. mail_title,
  35. content,
  36. receivers,
  37. mail_excel
  38. ):
  39. try:
  40. smtp = SMTP(self.host_server, 25)
  41. smtp.set_debuglevel(1)
  42. smtp.ehlo(self.host_server)
  43. smtp.login(self.sender_email, self.pwd)
  44. msg = MIMEMultipart('related')
  45. msg['From'] = self.send_name
  46. msg['Subject'] = Header(mail_title, 'gbk')
  47. msgAlternative = MIMEMultipart('alternative')
  48. msg.attach(msgAlternative)
  49. if content:
  50. textApart = MIMEText(content)
  51. msg.attach(textApart)
  52. if mail_excel:
  53. part = MIMEBase('application', "vnd.ms-excel")
  54. with open(mail_excel, 'rb') as fp:
  55. part.set_payload(fp.read())
  56. encode_base64(part)
  57. print(os.path.split(mail_excel)[1])
  58. part.add_header('Content-Disposition', 'attachment', filename=('gbk', '', os.path.split(mail_excel)[1]))
  59. msg.attach(part)
  60. for receiver in receivers:
  61. msg['To'] = receiver
  62. try:
  63. smtp.sendmail(self.sender_email, receiver, msg.as_string())
  64. except Exception as e:
  65. print(str(e))
  66. smtp.sendmail(self.sender_email, receiver, msg.as_string())
  67. print('Success!')
  68. except Exception as e:
  69. print('Error:{}'.format(str(e)))
  70. traceback.print_exc()
  71. def send_mail_by_admin(self,
  72. mail_title,
  73. content,
  74. receiver,
  75. mail_excel,
  76. file_name,
  77. url,
  78. header
  79. ):
  80. with open(mail_excel, 'rb') as f:
  81. m = MultipartEncoder(
  82. fields={
  83. "enclosure": ('file', f, 'application/octet-stream'),
  84. "mailAddressee": receiver,
  85. "mailContent": content,
  86. "mailEnclosureName": file_name,
  87. "mailTitle": mail_title,
  88. "mailType": "text/html",
  89. "time": ""
  90. }
  91. )
  92. header['Content-Type'] = m.content_type
  93. r = requests.post(url, data=m, verify=False, headers=header)
  94. if r and r.json()['success']:
  95. return True
  96. def send_test(self):
  97. send_email = EmailUtil()
  98. send_email.send_mail('elab_test', '11', ['1285211525@qq.com'],
  99. mail_excel=r'D:\elab-code\elab_mvp\resources\行为与模块分值汇总.xlsx')
  100. if __name__ == '__main__':
  101. send_email = EmailUtil()
  102. result = send_email.send_mail_by_admin('移动案场订阅日报', '的数据报告已经准备完成', '15773153135@163.com', r'D:\elab-code\elab_mvp\resources\module.xlsx', 'module.xlsx', send_email.url_dev,send_email.headers)
  103. print(result)