1
resposta

Enviar tabela no corpo do e-mail outlook PYTHON

Olá, senhores e senhoras Criei um robô que dispara e-mails de cobrança para a empresa, acontece que, gostaria de puxar esses endereços de e-mail de uma tabela no excel e além disso, no corpo do e-mail incluir uma tabela do excel... Só consigo disparar eu mesma atualizando os e-mails através do pywin32 e em anexo a tabela:

EXEMPLO

import win32com.client as win32

criar a integração com o outlook

outlook = win32.Dispatch('outlook.application')

criar um email

email = outlook.CreateItem(0)

configurar as informações do seu e-mail

email.To = "destino; destino2"
email.Subject = "E-mail automático do Python"
email.HTMLBody = f"""
<p>Prezados, os nomes abaixo ainda não realizaram o callback</p>
<p>Abs,</p>
# anexo = "C://Users/Marina/Downloads/arquivo.xlsx"
# email.Attachments.Add(anexo)

email.Send()
print("Email Enviado")
1 resposta

Olá Marina, como você está?

Peço desculpas pela demora em obter um retorno.

Para buscar endereços de e-mail de uma tabela no Excel, podemos utilizar a biblioteca pandas. A partir dela, carregar a tabela em um dataframe e acessar as colunas que contém os e-mails. Com isso, você terá uma lista com os e-mails que pode ser utilizada para preencher o campo "To" (para) do e-mail. A biblioteca pandas pode ser instalada executando o comando abaixo no terminal:

pip install pandas

Implementação do código

import pandas as pd

# Carrega a tabela em um dataframe
df = pd.read_excel('caminho_do_arquivo.xlsx')

# Acessa a coluna que contém os e-mails
emails = df['coluna_de_emails'].tolist()

Já para inserir uma tabela do Excel no corpo do e-mail, podemos utilizar a biblioteca openpyxl para ler o arquivo e extrair as informações da tabela. A biblioteca openpyxl pode ser instalada executando o comando abaixo no terminal:

pip install openpyxl

Implementação do código

import openpyxl

# Carrega o arquivo Excel
workbook = openpyxl.load_workbook('caminho_do_arquivo.xlsx')

# Seleciona a planilha que contém a tabela
worksheet = workbook['nome_da_planilha']

# Extrai os dados da tabela
tabela = []
for row in worksheet.iter_rows(values_only=True):
    tabela.append(row)

# Formata a tabela em HTML para ser inserida no corpo do e-mail
tabela_html = '<table>'
for row in tabela:
    if row != None:      
        tabela_html += '<tr>'
    for cell in row:
        if cell != None:
            tabela_html += f'<td>{cell}</td>'
    if row != None:
        tabela_html += '</tr>'
tabela_html += '</table>'

No código acima, a tabela é formatada em HTML na variável tabela_html que pode ser utilizada para preencher o corpo do e-mail. Basta substituir a parte que define o corpo do e-mail no seu código original para incluir a tabela:

email.HTMLBody = f"""
<p>Prezados, os nomes abaixo ainda não realizaram o callback</p>
{tabela_html}
<p>Abs,</p>
"""

Espero ter ajudado. Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Em caso de dúvidas estou à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!