我希望同时拥有 SMTP 后端和控制台后端,以便我可以通过 SMTP 发送电子邮件,同时还将生成的电子邮件打印到控制台。
在我的settings.py中我想要这样的东西:
EMAIL_BACKEND = ["django.core.mail.backends.smtp.EmailBackend", "django.core.mail.backends.console.EmailBackend"]
不幸的是,Django 一次仅支持一个电子邮件后端,因此提供后端列表不起作用。
但是您可以像这样创建自己的 EmailBackend:
from django.core.mail.backends.base import BaseEmailBackend
from django.core.mail.backends.console import EmailBackend as ConsoleBackend
from django.core.mail.backends.smtp import EmailBackend as SMTPBackend
class CustomEmailBackend(BaseEmailBackend):
def __init__(self, *args, **kwargs):
self.smtp_backend = SMTPBackend(*args, **kwargs)
self.console_backend = ConsoleBackend(*args, **kwargs)
def send_messages(self, email_messages):
smtp_count = self.smtp_backend.send_messages(email_messages)
console_count = self.console_backend.send_messages(email_messages)
# Maybe some validation
# assert smtp_count == console_count, 'SMTP and Console sent different amount of emails'
return smtp_count