如何使用两个不同的电子邮件地址发送电子邮件?

问题描述:

我有一个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_emailEmailMessage但它不起作用。发件人是'[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

+0

感谢。不幸的是,这是行不通的。它不会返回任何异常,但不会发送任何电子邮件。我在问题的底部添加了我的代码。我确定它被调用,并且我确信证书没问题。 –

+0

奇怪的是,我在最近工作过的一个项目中使用过它,它在那里工作。 – Colwin

+1

好的,现在它可以工作。我想我没有改变任何东西......可能是gmail导致了这个问题。像往常一样... –