Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

177
Vistas
¿Cómo enviar un correo electrónico sin usar settings.py? (parámetros smtp en la base de datos)

Me gustaría poder enviar correos electrónicos con django pero sin usar los parámetros de correo electrónico en settings.py. (EMAIL_HOST, EMAIL_USE_TLS, EMAIL_HOST_PASSWORD, etc...)

Estos parámetros se almacenan en db porque pueden ser diferentes según el usuario. ¿Cómo usar estos parámetros en la base para enviar correos electrónicos y no los de 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()

Puedo obtener los parámetros usando: 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 )
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Simplemente mueva todos los parámetros necesarios dentro de la instancia de clase y utilícelos en lugar de settings.XXX :

 class EmailThread(threading.Thread): def __init__(self, subject, html_content, recipient_list, email_host_user): self.subject = subject self.recipient_list = recipient_list self.html_content = html_content # set parameter to instance self.email_host_user = email_host_user threading.Thread.__init__(self) def run (self): msg = EmailMessage(self.subject, self.html_content, # use instance parameter self.email_host_user, self.recipient_list) msg.content_subtype = "html" msg.send() # add email_host_user to be able set it when call mail send process def send_html_mail(subject, html_content, recipient_list, email_host_user): EmailThread(subject, html_content, recipient_list, email_host_user).start()

Ahora puede enviar correo con parámetros personalizados:

 e_h_u = EmailParameter.objects.get(user=request.user).email_host_user send_html_mail(subject, html_content, recipient_list, e_h_u)
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda