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.
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 diccionariorecipients
contiene más de un destinatario con diferentes correos electrónicos para garantizar que el bucle está funcionando correctamente.