使用如下所示的标准设置here很好地解释了如何让Django发送邮箱.

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = "mail.mysmtpserver.somewhere"
#EMAIL_PORT
EMAIL_HOST_USER = "my@login"
EMAIL_HOST_PASSWORD = "mypassword"
#EMAIL_USE_TLS = True

然后用django.core.mail.EmailMessage把它寄出go .

但是,如果您正在运行多个站点,并且需要每个站点通过其自己的SMTP服务器(或者只是在同一SMTP服务器上的不同登录)发送邮箱,该怎么办呢?

搜索像这样的EmailBackend,或者用当前后端执行此操作的方法,并没有产生任何令人满意的结果.

推荐答案

如果要覆盖提供的设置,只需创建自己的连接并将其提供给send_emailEmailMessage即可

from django.core.mail import get_connection, send_mail
from django.core.mail.message import EmailMessage
# TODO: Insert clever settings mechanism
my_host = ''
my_port = 587
my_username = ''
my_password = ''
my_use_tls = True
connection = get_connection(host=my_host, 
                            port=my_port, 
                            username=my_username, 
                            password=my_password, 
                            use_tls=my_use_tls) 

send_mail('diditwork?', 'test message', 'from_email', ['to'], connection=connection)
# or
EmailMessage('diditwork?', 'test message', 'from_email', ['to'], connection=connection).send(fail_silently=False)

Update:使用后一定要关闭连接,@michel.iamit-answer指向显示为smpt缓存连接的代码@dhackner answer演示了如何使用with语句自动关闭连接.

Django相关问答推荐

如何将Django项目连接到容器化的PostgreSQL数据库?

如何从列中捕获数据并将其添加到下拉菜单中,以便表单填充另一个表

Django prefetch_related 与 3 个不直接相关的模型

将两个视图重定向到具有不同 url id Django 的一个模板的正确方法

Django rest framework, AttributeError: 'str' object has no attribute 'data' 无法使用表单上传图片

Django Rest Framework 速率限制动态基于用户类型

如何将多个模型添加到单个列表视图?

NoneType对象没有属性保存Django

更新或创建异步 Django ORM 实例

基于模型多选字段在模板django中显示结果

QuerySet对象在bulk_update中没有属性pk

变量为无时默认模板标签输出的Django设置?

如何在 Django 测试框架中修改会话

更新Django模型对象多个字段的有效方法

Django:创建索引:非唯一,多列

jinja2模板引擎中的这个-是做什么的?

Django 模板:通过扩展模板覆盖包含的子模板块

如何在 django 中分离我的模型?

登录后django重定向不起作用next不发布?

Django Admin - save_model 方法 - 如何检测字段是否已更改?