1

django.core.mail.send_mail()是否可以用自定义替换对整个项目(包括我的 INSTALLED_APPS 中的第三方项目)的调用send_mail()

我正在将 django-mailer 与我的项目集成,它提供send_mail()django.core.mail.send_mail(). 由于两者都使用相同的函数签名,文档建议在您通常导入 Django 提供的版本的地方导入 django-mailer 版本,如下所示:

# favour django-mailer but fall back to django.core.mail
from django.conf import settings

if "mailer" in settings.INSTALLED_APPS:
    from mailer import send_mail
else:
    from django.core.mail import send_mail

这适用于我自己的应用程序代码,但我也想在使用django.core.mail.send_mail(). 现在,当这些应用程序尝试发送电子邮件时,我遇到了错误。

Django 是否提供任何类型的钩子来替换django.core.mail.send_mail(),或者是否有解决方法?现在我正在考虑对每个发送电子邮件的第三方项目进行分叉并添加上面的条件导入代码,但这显然并不理想。

4

1 回答 1

1

Django 具有电子邮件后端,可让您覆盖django.core.mail发送电子邮件的方式,而不是通过 SMTP。有一些可以让你将它们保存在本地等等;django-mailer还包括一个(如 usage.txt 中所述)来做你想做的事。

于 2012-08-12T02:32:13.487 回答