Я разрабатываю приложение для автоматизации отправки писем из отдела сбора, где я работаю. Он состоит из доступа к электронной таблице Excel, чтения столбца, в котором отсутствует платеж, и отправки автоматического письма c клиенту. Код работает, но он отправляет электронное письмо только последнему, кто не совершил платеж, и не всем. можешь помочь мне? Следуйте приведенному ниже коду:
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
from datetime import date
import openpyxl
wb = openpyxl.load_workbook('C:/temp/cobranca.xlsx')
sheet = wb['Sheet1']
lastCol = sheet.max_column
latestMonth = sheet.cell(row=1, column=lastCol).value
unpaidMembers = {}
for r in range(2, sheet.max_row + 1):
payment = sheet.cell(row=r, column=lastCol).value
if payment != 'ok':
name = sheet.cell(row=r, column=1).value
email = sheet.cell(row=r, column=2).value
unpaidMembers[name] = email
print(unpaidMembers)
# create message object instance
msg = MIMEMultipart()
# setup the parameters of the message
password = "example"
msg['From'] = "example@example.com"
msg['To'] = email
msg['Subject'] = "%s - Honorário em aberto." % (name)
for name, email in unpaidMembers.items():
body = "Prezado(a) %s. \n \n Em nosso sistema consta, em sua conta, o honorário referente ao mês %s/2020 em aberto, pedimos sua regularização imediata. \n \n Caso o pagamento já tenha sido efetuado, por favor, desconsidere este e-mail. \n \n \n Att, \n OMNIA Tecnologia" % (
name, latestMonth)
print('Sending email to %s...' % email)
# add in the message body
msg.attach(MIMEText(body))
# create server
server = smtplib.SMTP('stmp.example.net', 587)
server.starttls()
# Login Credentials for sending the mail
server.login(msg['From'], password)
# send the message via the server.
server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()
print("successfully sent email to %s:" % (msg['To']))