#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
Надеюсь, это сработает и для вас тоже 🙂