I would like to be able to send emails with django but without using the email parameters in settings.py. (EMAIL_HOST, EMAIL_USE_TLS, EMAIL_HOST_PASSWORD, etc ...)
These parameters are stored in db because they can be different depending on the user. How to use these parameters in base to send emails and not those in settings.py ?
class EmailThread(threading.Thread):
"""
Class email (Thread)
"""
def __init__(self, subject, html_content, recipient_list):
self.subject = subject
self.recipient_list = recipient_list
self.html_content = html_content
threading.Thread.__init__(self)
def run (self):
msg = EmailMessage(self.subject,
self.html_content,
settings.EMAIL_HOST_USER,
self.recipient_list)
msg.content_subtype = "html"
msg.send()
def send_html_mail(subject, html_content, recipient_list):
"""
send an email asynchronous
"""
EmailThread(subject, html_content, recipient_list).start()
I can get the parameters using: email_params = EmailParameter.objects.get(user=request.user)
class EmailParameter(models.Model):
email_use_tls = models.BooleanField(_("email use tls"), default=True)
email_use_ssl = models.BooleanField(_("email use tls"), default=False)
email_host = models.URLField(_("email host"), max_length=200)
email_host_user = models.CharField(_("email host user"), max_length=200)
email_host_password = models.CharField(_("email host password"), max_length=200)
email_port = models.PositiveIntegerField(_("email port"))
default_from_email = models.EmailField(_("default from email"), max_length=200)
signature = models.TextField(_("signature"))
user = models.ForeignKey(
User,
verbose_name = _("user"),
related_name = "user_email_parameter",
on_delete=models.CASCADE
)