Python smtplib отправить электронное письмо получателю в соответствующей строке

#python #email #smtplib

#питон #Адрес электронной почты #smtplib

Вопрос:

Есть ли способ отправить письмо с помощью python smtplib, получатель которого зависит от строки в кадре данных? (одно письмо к одному) Я могу отправить другое сообщение по строке, но я не могу повторить то же самое с получателем, так как я могу отправить их только одному или всем получателям, о которых я упоминал. Я не могу отправить его получателю в строке корреспондента. У меня есть следующий код:

 for each_line in df.index:  z = message (its an example... this part is like df['first column']   " hello "   df['second column'])  MY_ADDRESS = "mymail@mail.com"   MY_PASSWORD = "mypassword"   RECIPIENT_ADDRESS = PROBLEM HERE (I can only write one to multiple email receivers, but not to iterate by row as the message).  HOST_ADDRESS = 'smtp-mail.outlook.com'   HOST_PORT = 587   # Connection with the server  server = smtplib.SMTP(host=HOST_ADDRESS, port=HOST_PORT)  server.starttls()  server.login(MY_ADDRESS, MY_PASSWORD)  # Creation of the MIMEMultipart Object  message = MIMEMultipart()  # Setup of MIMEMultipart Object Header  message['From'] = MY_ADDRESS  message['To'] = RECIPIENT_ADDRESS  message['Subject'] = "Alerts"   # Creation of a MIMEText Part  textPart = MIMEText(z)   # Part attachment  message.attach(textPart)   # Send Email and close connection  server.send_message(message)  server.quit()  

Есть ли способ сделать это? В моем фрейме данных есть строка, включающая соответствующий адрес электронной почты получателя, но я не могу его использовать. Я получаю следующую ошибку: «Ошибка атрибута: объект «список» не имеет атрибута «кодировать»»

Заранее спасибо 🙂

С уважением,

Ответ №1:

Я решил эту проблему, добавив следующий код:

 li = DataFrame['Column'].values.tolist()  length = len(li)   #This goes inside the previous for loop for each_line in DataFrame.index:  X = DataFrame['Column'][each_line]  RECIPIENT_ADDRESS = X  print(X)  #Then (inside the for loop)  message['To'] = RECIPIENT_ADDRESS  

Надеюсь, это сработает и для вас тоже 🙂