如何在 Django 中拥有多个电子邮件后端?

问题描述 投票:0回答:1

我希望同时拥有 SMTP 后端和控制台后端,以便我可以通过 SMTP 发送电子邮件,同时还将生成的电子邮件打印到控制台。

在我的settings.py中我想要这样的东西:

EMAIL_BACKEND = ["django.core.mail.backends.smtp.EmailBackend", "django.core.mail.backends.console.EmailBackend"]
python django smtp
1个回答
0
投票

不幸的是,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
© www.soinside.com 2019 - 2024. All rights reserved.