python - 重写 Django 的 EmailMessage 类

标签 python django email smtp

我正在开发一个使用 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”, "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1261777c767760527370713c717d7f" rel="noreferrer noopener nofollow">[email protected]</a>", ["<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f29f8b979f939b9e93969680978181b2939091dc919d9f" rel="noreferrer noopener nofollow">[email protected]</a>”])

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

关于python - 重写 Django 的 EmailMessage 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41238555/

相关文章:

python - Ajax 的 Django csrf token

jquery - 将通过ajax上传的文件保存到Django模型ImageField

php - 错误后继续执行代码并稍后在 PHP 中处理它们?

python - threading.local 相当于 twisted.web?

python - 一个简单的Python部署问题-痛苦的世界

python - 访问在远程服务器上运行的 Ipython Notebook

django - 如何在 django Rest 框架中跳过或删除 simplejwt token 身份验证中的密码字段?

php - SSL 连接错误 :140770FC

带附件的 php mail() 返回 noname.txt

python - 如果第二个元素不是重复的,则删除二维 numpy 数组的行