【问题标题】:Overriding the EmailMessage class of Django覆盖 Django 的 EmailMessage 类
【发布时间】:2017-05-05 10:43:58
【问题描述】:

我正在开发一个使用 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 扩展

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

【问题讨论】:

    标签: python django email smtp


    【解决方案1】:

    尝试返回类似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
    

    【讨论】:

      猜你喜欢
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 2020-08-12
      • 2014-03-01
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多