Skip to main content
 首页 » 编程设计

python之覆盖 Django 的 EmailMessage 类

2024年08月21日29dflying

我正在处理一个使用 Django 1.7 的现有项目 我们正在将我们的电子邮件服务与 Amazon Ses 集成。这引发了一个问题,即我们无法监控哪些邮件发送成功,哪些邮件发送失败。所以我正在考虑记录电子邮件发送失败的错误。 目前,django.core.mail 的 EmailMessage 类被用于发送电子邮件,并且在任何地方添加记录器代码将是一个肮脏的解决方案。所以我正在考虑重写 EmailMessage 类并使用我的自定义类发送电子邮件并在其中添加日志记录逻辑。 这是它的代码

from django.core.mail import EmailMessage 
 
class EmailMessaging(EmailMessage): 
 
    def send(self): 
        result = super(EmailMessaging, self).send() 
        if(result): 
            print 'success' 
            #do nothing successful 
        else: 
            print 'fail'  
            #failed:- add event to logger | Db | Sentry 

当我尝试使用 myClass 发送电子邮件时,它会抛出一个错误:-

from email_message import EmailMessaging 
message = EmailMessaging("this is the subject", "this is the body”, "sender@abc.com", ["myemailaddress@abc.com”]) 

SMTPException: STARTTLS extension not supported by server

但是,如果我使用 EmailMessage 类,它工作正常。我不明白为什么会这样。 根据我的阅读,我认为通过覆盖 EmailMessage 类,我错过了一些导致错误的默认配置设置。是这样吗? 请帮忙

请您参考如下方法:

尝试返回类似 parent class method 的结果

class EmailMessaging(EmailMessage): 
 
    def send(self): 
        result = super(EmailMessaging, self).send() 
        if(result): 
            print 'success' 
            #do nothing successful 
        else: 
            print 'fail'  
            #failed:- add event to logger | Db | Sentry 
        return result