Olá pessoal;
Estou fazendo um código que acesse o meu e-mail no Gmail e envia e-mail automaticamente para uma lista de e-mails com um anexo (um anexo diferente para cada e-mail informado). Ao executar o código ele até envia os e-mails, porém, os anexos que contém acentos ou cifrão no nome ele não está anexando. Por exemplo, os anexos Financeiro. xlsx e Vendas.xlsx estão sendo anexados perfeitamente, porém, os anexos Logística.xlsx e Produção.xlsx não são anexados (o e-mail é enviado com um anexo em txt vazio).
Alguém pode me ajudar a implementar uma correção no código, por favor?
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import pandas as pd
df_lista_emails = pd.read_excel("Enviar E-mails.xlsx")
def enviar_email():
p.add_header('Content-Disposition', "attachment; filename= %s" % filename)
msg.attach(p)
s = smtplib.SMTP('smtp.gmail.com', 587)
s.starttls()
s.login(fromaddr, "????????????????") #por segurança foram utilizados ? no lugar da senha
text = msg.as_string()
s.sendmail(fromaddr, toaddr, text)
s.quit()
nomes = df_lista_emails['Gerente'].tolist()
setores = df_lista_emails["Relatório"].tolist()
emails = df_lista_emails["E-mail"].tolist()
anexos = []
for setor in setores:
anexos.append(setor+".xlsx") #o nome do arquivo é o mesmo nome do setor, porém, com a extensão .xlsx
i = 0
for email in emails:
fromaddr = "wvieiradev@gmail.com"
toaddr = email
setor = setores[i]
nome = nomes[i]
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "Planilha do setor {}".format(setor)
body = """
Prezado {};
Segue anexa planilha do setor {} para sua análise.
Abraços!
""".format(nome, setor)
msg.attach(MIMEText(body, 'plain'))
filename = anexos[i]
attachment = open(filename, "rb")
p = MIMEBase('application', 'octet-stream')
p.set_payload((attachment).read())
encoders.encode_base64(p)
enviar_email()
i += 1
print("E-mails enviados com sucesso!")