发送消息提醒

1、文件结构:

-message

  -__init__.py

  -base.py

  -dingding.py

  -email.py

  -msg.py

  -wx.py

2、配置文件(以Django配置为例)

MESSAGE_CLASSES = [
    'utils.message.email.Email',
    'utils.message.msg.Msg',
    'utils.message.wx.WeChat',
    'utils.message.dingding.DingDing',
]

#根目录下有个utils文件夹,message文件夹放在该目录下

  

3、文件内容

__init__.py

import importlib
from django.conf import settings

def send_message(to,name,subject,body):
    """
    短信、邮件、微信
    :param to: 接受者 
    :param name: 接受者姓名
    :param subject: 主题
    :param body: 内容
    :return: 
    """
    for cls_path in settings.MESSAGE_CLASSES:
        # cls_path是字符串
        module_path,class_name = cls_path.rsplit('.',maxsplit=1)
        m = importlib.import_module(module_path)
        obj = getattr(m,class_name)()
        obj.send(subject,body,to,name,)

  

base.py

class BaseMessage(object):
    def send(self, subject, body, to, name):
        raise NotImplementedError('未实现send方法')

  

dingding.py

from .base import BaseMessage

class DingDing(BaseMessage):
    def __init__(self):
        pass

    def send(self,subject,body,to,name):
        print('钉钉消息发送成功')

  

email.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from .base import BaseMessage

class Email(BaseMessage):
    def __init__(self):
        self.email = "your email"
        self.user = "your nickname"
        self.pwd = 'your email password'

    def send(self,subject,body,to,name):

        msg = MIMEText(body, 'plain', 'utf-8')  # 发送内容
        msg['From'] = formataddr([self.user,self.email])  # 发件人
        msg['To'] = formataddr([name, to])  # 收件人
        msg['Subject'] = subject # 主题


        server = smtplib.SMTP("SMTP服务", 25) # SMTP服务
        server.login(self.email, self.pwd) # 邮箱用户名和密码
        server.sendmail(self.email, [to, ], msg.as_string()) # 发送者和接收者
        server.quit()

  

msg.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from .base import BaseMessage
class Msg(BaseMessage):
    def __init__(self):
        pass

    def send(self,subject,body,to,name):
        print('短信发送成功')

  

wx.py

from .base import BaseMessage

class WeChat(BaseMessage):
    def __init__(self):
        pass

    def send(self,subject,body,to,name):
        print('微信发送成功')

  

原文地址:https://www.cnblogs.com/wangbaihan/p/8138269.html