You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中配置多个邮件后端?

Django同时使用SMTP和Console邮件后端的正确配置

Django 默认不支持直接通过列表形式配置多个EMAIL_BACKEND,你给出的EMAIL_BACKEND = ["django.core.mail.backends.smtp.EmailBackend", "django.core.mail.backends.console.EmailBackend"]配置会导致报错。要实现同时通过SMTP发送邮件并在控制台打印邮件内容,需要自定义一个邮件后端来整合这两个功能:

步骤1:创建自定义邮件后端

在你的Django项目任意一个app下新建backends.py文件,写入以下代码:

from django.core.mail.backends.base import BaseEmailBackend
from django.core.mail.backends.smtp import EmailBackend
from django.core.mail.backends.console import EmailBackend as ConsoleEmailBackend

class MultiEmailBackend(BaseEmailBackend):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # 初始化SMTP后端
        self.smtp_backend = EmailBackend(*args, **kwargs)
        # 初始化Console后端
        self.console_backend = ConsoleEmailBackend(*args, **kwargs)

    def send_messages(self, email_messages):
        # 用SMTP发送邮件
        smtp_sent = self.smtp_backend.send_messages(email_messages)
        # 在控制台打印邮件
        console_sent = self.console_backend.send_messages(email_messages)
        # 返回成功发送的邮件总数
        return smtp_sent + console_sent

步骤2:配置settings.py

将EMAIL_BACKEND指向你刚创建的自定义后端,同时保留SMTP的相关配置:

# 自定义邮件后端路径,替换成你的app名称
EMAIL_BACKEND = "your_app_name.backends.MultiEmailBackend"

# SMTP相关配置(根据你的实际情况修改)
EMAIL_HOST = 'smtp.example.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'your_email@example.com'
EMAIL_HOST_PASSWORD = 'your_email_password'
DEFAULT_FROM_EMAIL = 'your_email@example.com'

这样配置后,当你调用Django的邮件发送API时,邮件会同时通过SMTP发送出去,并且在控制台输出邮件的内容和相关信息。

内容的提问来源于stack exchange,提问作者c p

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:34:55