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 № 1Puoi 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