Enviar correo electrónico con Python smtplib al destinatario en la fila correspondiente.
¿Existe alguna manera de enviar un correo electrónico con python smtplib cuyo destinatario varíe por fila en un dataframe? (correo uno a uno)
Puedo enviar un mensaje diferente por fila, pero no puedo replicar lo mismo con el destinatario, ya que solo puedo enviarlos a uno o a todos los destinatarios que menciono. No puedo enviarlo al destinatario en la fila correspondiente. Tengo el siguiente código:
for each line in df.index:
z = mensaje (es un ejemplo... esta parte es como df['primera columna'] + " hola " + df['segunda columna'])
MI_DIRECCION = "mimail@mail.com"
MI_CONTRASEÑA = "micontraseña"
DIRECCION_DESTINATARIO = PROBLEMA AQUÍ (solo puedo escribir uno a varios receptores de correo electrónico, pero no iterar por fila como en el mensaje).
DIRECCION_SERVIDOR = 'smtp-mail.outlook.com'
PUERTO_SERVIDOR = 587
# Conexión con el servidor
server = smtplib.SMTP(host=DIRECCION_SERVIDOR, port=PUERTO_SERVIDOR)
server.starttls()
server.login(MI_DIRECCION, MI_CONTRASEÑA)
# Creación del objeto MIMEMultipart
mensaje = MIMEMultipart()
# Configuración del encabezado del objeto MIMEMultipart
mensaje['From'] = MI_DIRECCION
mensaje['To'] = DIRECCION_DESTINATARIO
mensaje['Subject'] = "Alertas"
# Creación de una parte MIMEText
parte_texto = MIMEText(z)
# Adjuntar la parte al mensaje
mensaje.attach(parte_texto)
# Enviar el correo electrónico y cerrar la conexión
server.send_message(mensaje)
server.quit()
¿Existe alguna manera de hacer esto?
Mi dataframe tiene una fila que incluye la dirección de correo electrónico del destinatario respectivo, pero no puedo usarla. Obtengo el siguiente error:
“AttributeError: el objeto ‘lista’ no tiene el atributo ‘encode'”
Gracias de antemano 🙂
Saludos cordiales,
davy.ai
Como modelo de lenguaje de IA, no puedo probar el fragmento de código proporcionado. Sin embargo, con respecto a tu pregunta, sí es posible enviar un correo electrónico con
smtplib
en Python, cuyo destinatario varía por fila en un dataframe.Para lograr esto, puedes iterar sobre las filas del dataframe y enviar un correo electrónico para cada fila, con la dirección de correo electrónico del destinatario obtenida de la fila correspondiente. A continuación se muestra un ejemplo de fragmento de código que demuestra cómo se puede hacer esto:
En el código anterior, primero cargamos el dataframe y luego definimos la dirección de correo electrónico y la contraseña del remitente, así como los detalles del servidor de correo. Luego iteramos sobre las filas del dataframe utilizando
df.iterrows()
, y para cada fila, construimos el mensaje y la dirección de correo electrónico del destinatario. Luego creamos un objeto de mensaje MIME y lo enviamos usandoserver.send_message()
. Por último, cerramos la conexión con el servidor de correo.Ten en cuenta que la función
MIMEText
se utiliza para crear un mensaje de texto sin formato para el correo electrónico, y esto se puede reemplazar con las funciones apropiadas si deseas enviar un mensaje HTML o un adjunto. Además, el ejemplo asume que las columnasmessage
yemail
están presentes en el dataframe, y debes reemplazarlas con los nombres reales de las columnas en tu conjunto de datos.