Olá a todos, estou desenvolvendo uma aplicação para envio automático de e-mails do setor de cobranças, com base no conteúdo de um livro (Automatize tarefas maçantes com Python). No caso eu alterei um pouco do código devido a minha necessidade e depois de testes com o conteúdo do livro. A ideia é de acessar uma planilha em excel e localizar os clientes com honorários em aberto, salvar em uma biblioteca e após enviar a eles um e-mail comunicando a pendência. O código funciona para localizar os clientes, e até é printado no terminal os mesmos, porém quando ele vai enviar o e-mail o mesmo vai somente para o último cliente da lista.
Segue código:
import openpyxl, smtplib, sys
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
#Abre a planilha e obtém o status do último pagamento.
wb = openpyxl.load_workbook('C:/temp/cobranca.xlsx')
sheet = wb['Sheet1']
lastCol = sheet.max_column
#latestMonth = sheet.cell(row=1, column=lastCol).value
#Verifica o status de pagamento de cada cliente.
unpaidMembers = {}
for r in range(2, sheet.max_row + 1):
for c in range(3, lastCol + 1):
payment = sheet.cell(row=r, column=c).value
if payment != 'ok':
cliente = sheet.cell(row=r, column=1).value
email = sheet.cell(row=r, column=2).value
mes = sheet.cell(row=1, column=c).value
unpaidMembers[cliente] = email
print('Linha:',r,'Coluna:',c,'Cliente:',cliente,'Email:',email,'Mês:',mes)
#Faz login na conta de email.
for cliente, email, in unpaidMembers.items():
body = "cliente: %s | mes: %s" % (cliente, mes)
print('sending email to %s...' % (email))
# create message object instance
msg = MIMEMultipart()
# setup the parameters of the message
password = "senha"
msg['From'] = "email@email.com"
msg['To'] = email
msg['Subject'] = "%s - Honorário em aberto." % (cliente)
# add in the message body
msg.attach(MIMEText(body))
# create server
server = smtplib.SMTP('smtp.gmail.com: 587')
server.starttls()
# Login Credentials for sending the mail
server.login(msg['From'], password)
# send the message via the server.
server.sendmail(msg['From'], email, msg.as_string())
server.quit()
print("successfully sent email to %s:" % (email))
Modelo de planilha: https://prnt.sc/11rkrjm
Podem me ajudar?