es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

enviando correos electrónicos en un bucle usando Python

Estoy tratando de usar un bucle for para enviar un correo electrónico a varios destinatarios, si se encuentra “<>” en el asunto o el cuerpo, se reemplaza dinámicamente con el nombre del destinatario.

Estoy iterando sobre un diccionario de destinatarios en la forma {"nombre": "correo electrónico"}

“`from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib

def send(destinatarios, asunto, mensaje):
for nombre, correo in destinatarios.items():
asunto_editado = asunto.replace("<>", nombre)
mensaje_editado = mensaje.replace("<>", nombre)

<pre><code> mail = MIMEMultipart()
mail['from'] = 'Tomas'
mail['to'] = correo
mail['subject'] = asunto_editado
mail.attach(MIMEText(mensaje_editado, "plain"))

with smtplib.SMTP(host="smtp.gmail.com", port=587) as smtp:
smtp.ehlo()
smtp.starttls()
smtp.login(nombre_de_usuario, contraseña)
smtp.send_message(mail)
</code></pre>

“`

El bucle parece enviar solo al primer destinatario.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece ser que podría haber un problema con la conexión SMTP que no se cierra correctamente. Una forma de solucionarlo es añadir smtp.quit() al final del bucle para cerrar la conexión correctamente. Además, asegúrate de que el diccionario recipients contiene más de un destinatario con diferentes correos electrónicos para garantizar que el bucle está funcionando correctamente.

Comments are closed.