dajngo-利用配置反射调用模块-发送邮件

第一:优先写好email文件代码,

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from utlis.massage.base import Baseemail

class Email(Baseemail):
    def __init__(self):
        self.fromname='帅哥'
        self.fromemail='******.com'  #自己的邮箱
        self.pwd='*******'      #邮箱密码

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

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

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

 第二部:写好配置信息,以后要改只要改配置信息就行.

MASSAGE=[
    'utlis.massage.email.Email',    #utlis.massage.email是上面email的路径信息, Email是emial的类.
]

第三部:

import importlib
from django.conf import settings

def send_massage(subject,name,toemail,body):
    for msg in settings.MASSAGE:          #从settings中取到配置信息
        model_path,class_name=msg.rsplit('.',maxsplit=1)    #'utlis.massage.email.Email'取出来从右边的第一个. 切分,取到路径和调用的类字符串
    m=importlib.import_module(model_path)     #利用上面的字符串找到路径
    obj
=getattr(m,class_name)()         #反射, 路径信息找到py文件,其实就是以个大模块,所以可以用反射找到里面的一个类,并且把该类实例化
    obj.send(subject,body,toemail,name)    #调用这个类的send()方法.
原文地址:https://www.cnblogs.com/52forjie/p/8139460.html