Tom*_*and 21 email django smtp
让Django发送电子邮件在这里使用标准设置很好地解释,如下所示.
Run Code Online (Sandbox Code Playgroud)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发送它.
但是,如果您运行多个站点并且需要每个站点通过自己的SMTP服务器(或者只是在同一SMTP服务器中的不同登录)发送电子邮件,该怎么办?
搜索这样的EmailBackend或者使用当前后端进行搜索的方法并没有产生任何令人满意的结果.
Dan*_*man 25
如果要覆盖提供的设置,只需创建自己的连接并将其提供给send_email或EmailMessage
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)
Run Code Online (Sandbox Code Playgroud)
更新:确保在使用后关闭连接,@ michel.iamit回答指向显示连接缓存为smpt的代码.@dhackner答案显示了如何使用with语句自动关闭连接.
dha*_*ner 12
我会略微修改Daniel Backman的答案,使用文档中的上下文管理器.它将自己处理open()和close()调用.
from django.core.mail import get_connection, send_mail
from django.core.mail.message import EmailMessage
with get_connection(
host=my_host,
port=my_port,
username=my_username,
password=my_password,
use_tls=my_use_tls
) as connection:
EmailMessage(subject1, body1, from1, [to1],
connection=connection).send()
Run Code Online (Sandbox Code Playgroud)
https://docs.djangoproject.com/en/dev/topics/email/#email-backends
| 归档时间: |
|
| 查看次数: |
11868 次 |
| 最近记录: |