Python - настраиваемое тело письма SMTP, включая таблицу Dataframe и простой текст - PullRequest
0 голосов
/ 10 июля 2020

Python - настраиваемое тело письма SMTP, включая таблицу Dataframe и простой текст: я хочу отправить электронное письмо с телом письма, состоящим из простого текста, такого как «Уважаемый пользователь! Ниже приведены сведения о KPI:

Фрейм данных Таблица

, когда я пытаюсь отправить, я получаю Table как вложение.

1 Ответ

0 голосов
/ 10 июля 2020

Мне не хватает контекста, поэтому я предполагаю, что под «Dataframe» вы имеете в виду pandas DataFrame и что вы используете встроенную Python smtplib .

В следующем примере отправляется сообщение электронной почты с кадром данных Pandas в теле:

<code>import pandas as pd
import html
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText


def send_email(msg_body):
    # The following block is inspired by Todor Minakov's answer in https://stackoverflow.com/a/33121151/13891613
    sender = "someemailaddress@somehost.someprefix"
    receiver = "someotheremailaddress@someotherhost.someprefix"
    msg = MIMEMultipart('alternative')
    msg['Subject'] = "Alert"
    msg['From'] = sender
    msg['To'] = receiver
    msg_body = html.escape(msg_body)
    message_html = f'<html><body><pre>{msg_body}
'part2 = MIMEText (message_ html,' html ') msg.attach (part2) # Отправьте сообщение через обычный сервер Gmail, через SSL - пароли отправляются, после s = smtplib.SMTP_SSL (' smtp.gmail.com ') # выполните smtp auth; отправляет ehlo, если он еще не был отправлен s.login (отправитель, пароль = input ("Введите пароль: \ n")) s.sendmail (отправитель, получатель, msg.as_string ()) s.quit () если __name__ == '__main__': # Создайте пример pandas dataframe data = {'Столбец A': ['Некоторое значение', 'Некоторое значение2', 'Некоторое значение3'], 'Столбец B': ['Некоторое значение' , 'Некоторое значение2', 'Некоторое значение3'], 'Столбец C': ['Некоторое значение', 'Некоторое значение2', 'Некоторое значение3'],} df = pd.DataFrame (data, columns = ['Column A ',' Column B ',' Column C ']) # Отправьте фрейм данных по электронной почте, используя smtplib message = f "Уважаемый пользователь, Ниже приведены детали KPI: \ n \ n {df.to_string ()}" send_email (сообщение)

Приведенный выше скрипт создал следующее сообщение в моей учетной записи Gmail (после аутентификации моей машины в учетной записи Gmail):

введите описание изображения здесь

Если под «Dataframe» вы имели в виду нечто иное, чем pandas DataFrame, то вы можете просто сериализовать объект вашего фрейма данных в строку и передать его в теле сообщения, аналогично тому, как это сделано в скрипте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...