2012-08-12 32 views
1

是否可以使用自定義send_mail()來替換跨整個項目(包括INSTALLED_APPS中的第三方項目)django.core.mail.send_mail()的呼叫?跨所有應用程序替換django.core.mail.send_mail()?

我正在將django-mailer與我的項目集成在一起,該項目爲django.core.mail.send_mail()提供替換send_mail()。由於都使用相同的函數簽名的文檔建議在進口地的Django的郵件版本在那裏你通常導入的Django提供的版本,像這樣:

# 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 

這適用於自己的應用程序代碼,但我d還希望在使用django.core.mail.send_mail()的第三方應用程序中進行相同的更改。現在,當這些應用程序嘗試發送電子郵件時,我遇到了錯誤。

Django是否提供任何鉤子來取代django.core.mail.send_mail(),或者是否有解決方法?現在我正在尋找每個發送電子郵件並在上面添加條件導入代碼的第三方項目,但顯然這並不理想。

回答

1

Django的有email backends,讓您可以覆蓋從django.core.mail電子郵件發送的方式,而不是通過SMTP去。有一些可以讓你在本地保存等等; django-mailer還包括一個(as described in usage.txt)來完成你想要做的事情。