Mám projekt Django, ktorý má dve domény.
domain1.com
domain2.com
používam Sites
aplikácia sa líši medzi týmito dvomi adresami:
<h1>Welcome to {% if site.id==1 %}Domain1{% else %}Domain2</h1>
Chcem odosielať správy z oboch e-mailov:
send_email(user, "domain1@gmail.com" if site.id==1 else "domain2@gmail.com", message...)
Snažil som sa pridať from_email
na EmailMessage
Odosielateľ je "domain1@gmail.com".
mail = EmailMessage(subject, message, from_email="domain2@gmail.com", to=[user_email])
mail.send()
Mám len jednu settings.py
takže môžem nastaviť len jeden 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"
Viete, ako to urobiť?
EDIT: Tak som to vyskúšal:
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()
"Skontroloval som to - tento kód sa volá. Nevyvoláva žiadnu výnimku, ale neodosiela e-mail."
Som si istý, že som túto adresu a e-mail testoval vo vnútri settings.py
ako globálne spojenie a fungovalo.
odpovede:
2 pre odpoveď č. 1Nastavenia v súbore settings.py môžete prepísať pomocou funkcie get_connection, ako je táto
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()
Použitie s automaticky ukončí pripojenie. Ak nechcete používať s vami, budete musieť zatvoriť pripojenie manuálne pomocou connection.close()
Dokumentácia je tu -> https://docs.djangoproject.com/en/dev/topics/email/#email-backends