Отправка писем Outlook с win32 в python - PullRequest
1 голос
/ 04 октября 2019

Я относительно новичок в мире кодирования и пытаюсь использовать следующий код Python для отправки автоматических отчетов по электронной почте. Но я получаю только фрейм данных в автоматическом электронном письме, а не "Привет, это тестовое электронное письмо" в теле письма Outlook.

Не совсем уверен, что здесь происходит не так.

import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randint(0,100,size=(10, 4)), columns=list('ABCD'))

outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = 'user@email.com'
mail.Subject = 'Insert Subject here'
mailerr1=df.to_html()
attachment  = 'shot.png'
mail.Attachments.Add(attachment)
mail.Body = "hi this is  a test email"
mail.HTMLBody = mailerr1

mail.Send()

Был бы очень признателен, если бы кто-то мог подсказать мне, что здесь происходит .. Спасибо.

1 Ответ

0 голосов
/ 04 октября 2019

Вы перезаписываете Body, когда назначаете HTMLBody, ваш почтовый клиент должен использовать HTMLBody по умолчанию.

Так что вам нужно либо объединить фрейм данных в Bodyили добавьте ваш Body в качестве html к другому, вот пример:

email.HTMLBody = '<p>hi this is a test email</p><br>' + mailerr1

Вы также должны отформатировать его в фактический html, см. этот вопрос: Отправка электронной почты в формате HTML с использованием Python

tl: др

email.HTMLBody = """
<html>
  <head></head>
  <body>
    <p>hi this is a test email</p><br>
""" + mailerr1 + """
  </body>
</html>
"""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...