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

2024-10-04 05:26:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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中,但没有效果。发件人是'域名1@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中测试了这个地址和电子邮件作为一个全局连接,并且成功了。你知道吗


Tags: comsendhostmessagesettingsemail地址mail
1条回答
网友
1楼 · 发布于 2024-10-04 05:26:30

您可以覆盖设置.py像这样使用get\u连接

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将自动关闭连接。如果不使用with,则需要使用connection.close()手动关闭连接

文档在这里->;https://docs.djangoproject.com/en/dev/topics/email/#email-backends

相关问题 更多 >