/ / Come utilizzare due diversi indirizzi e-mail per l'invio di e-mail? - python, django, email, django-email

Come utilizzare due diversi indirizzi email per l'invio di e-mail? - python, django, email, django-email

Ho un progetto Django che ha due domini.

domain1.com
domain2.com

Io uso Sites l'applicazione differisce tra questi due indirizzi come:

<h1>Welcome to {% if site.id==1 %}Domain1{% else %}Domain2</h1>

Voglio essere in grado di inviare messaggi da entrambe le e-mail:

    send_email(user, "domain1@gmail.com" if site.id==1 else "domain2@gmail.com", message...)

Ho provato ad aggiungere from_email a EmailMessage ma non funziona. Il mittente è "domain1@gmail.com".

mail = EmailMessage(subject, message, from_email="domain2@gmail.com", to=[user_email])
mail.send()

Ne ho solo uno settings.py quindi posso impostare probabilmente solo un 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"

Sai come farlo funzionare?

EDIT: Quindi ho provato questo:

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()

L'ho verificato: questo codice viene chiamato. Non restituisce alcuna eccezione ma non invia e-mail.

A dire il vero, ho testato questo indirizzo e-mail all'interno settings.py come connessione globale e ha funzionato.

risposte:

2 per risposta № 1

Puoi sovrascrivere le impostazioni in settings.py usando get_connection in questo modo

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()

L'uso con chiuderà automaticamente la connessione. Se non lo usi con te, dovrai chiudere manualmente la connessione connection.close()

La documentazione è qui -> https://docs.djangoproject.com/en/dev/topics/email/#email-backends