我有一个有两个域的Django项目。
domain1.com
domain2.com
我使用Sites
应用程序来区分这两个地址,例如:
<h1>Welcome to {% if site.id==1 %}Domain1{% else %}Domain2</h1>
我希望能够从这两封电子邮件中发送消息:
send_email(user, 'domain1@gmail.com' if site.id==1 else 'domain2@gmail.com', message...)
我尝试将from_email
添加到EmailMessage
,但它不起作用。发件人是&#39; domain1@gmail.com'。
mail = EmailMessage(subject, message, from_email='domain2@gmail.com', to=[user_email])
mail.send()
我只有一个settings.py
所以我可能只设置一个SMTP。
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'domain1@gmail.com'
EMAIL_HOST_PASSWORD = 'pswd'
你知道怎么做吗?
编辑:我试过这个:with get_connection(
host=settings.EMAIL_HOST,
port=settings.EMAIL_PORT,
username='myemail@gmail.com',
password='mypasswd',
use_tls=settings.EMAIL_USE_TLS) as connection:
EmailMessage(subject, message, [user.email],
connection=connection).send()
我已经检查过了 - 正在调用此代码。它不会返回任何异常,但它不会发送电子邮件。
可以肯定的是,我已经在settings.py
内测试了这个地址和电子邮件作为全球连接并且它有效。
答案 0 :(得分:2)
您可以使用get_connection覆盖settings.py中的设置
from django.core.mail import get_connection, send_mail
from django.core.mail.message import EmailMessage
with get_connection(
host=<host>,
port=<port>,
username=<username>,
password=<password>,
use_tls=<True/False>
) as connection:
EmailMessage(subject, body, from, [to],
connection=connection).send()
使用with将自动关闭连接。如果您不使用,则需要使用connection.close()
文档在这里 - &gt; https://docs.djangoproject.com/en/dev/topics/email/#email-backends