如何使用两个不同的电子邮件地址发送电子邮件?
问题描述:
我有一个Django项目,它有两个域。如何使用两个不同的电子邮件地址发送电子邮件?
domain1.com
domain2.com
我用Sites
应用像这两个地址之间的不同:
<h1>Welcome to {% if site.id==1 %}Domain1{% else %}Domain2</h1>
我希望能够从两个电子邮件发送消息:
send_email(user, '[email protected]' if site.id==1 else '[email protected]', message...)
我尝试添加from_email
到EmailMessage
但它不起作用。发件人是'[email protected]'。
mail = EmailMessage(subject, message, from_email='[email protected]', 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 = '[email protected]'
EMAIL_HOST_PASSWORD = 'pswd'
你知道如何使它工作吗?
编辑:所以,我想这一点:
with get_connection(
host=settings.EMAIL_HOST,
port=settings.EMAIL_PORT,
username='[email protected]',
password='mypasswd',
use_tls=settings.EMAIL_USE_TLS) as connection:
EmailMessage(subject, message, [user.email],
connection=connection).send()
我检查了它 - 这个代码将被调用。它不会返回任何异常,但不会发送电子邮件。
可以肯定,我已经在settings.py
里面测试过这个地址和电子邮件了,它是一个全局连接,它工作正常。
答
您可以通过使用get_connection这样
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()
与使用将自动关闭连接覆盖你的settings.py设置。如果不使用就需要使用connection.close()
文档手动关闭连接就在这里 - >https://docs.djangoproject.com/en/dev/topics/email/#email-backends
感谢。不幸的是,这是行不通的。它不会返回任何异常,但不会发送任何电子邮件。我在问题的底部添加了我的代码。我确定它被调用,并且我确信证书没问题。 –
奇怪的是,我在最近工作过的一个项目中使用过它,它在那里工作。 – Colwin
好的,现在它可以工作。我想我没有改变任何东西......可能是gmail导致了这个问题。像往常一样... –