在python中使用Win32发送Outlook电子邮件

时间:2019-10-04 05:30:43

标签: python python-3.x outlook

我对编码世界还比较陌生,因此尝试使用以下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 :(得分:0)

当您分配给Body时,您的HTMLBody将会被覆盖。默认情况下,电子邮件客户端必须使用HTMLBody

因此,您需要将数据帧合并到Body字符串中,或​​将Body作为html添加到另一个,这是一个示例:

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

尽管您还需要将其格式化为实际的html,请参见以下问题:Sending HTML email using Python

tl:dr

email.HTMLBody = """
<html>
  <head></head>
  <body>
    <p>hi this is a test email</p><br>
""" + mailerr1 + """
  </body>
</html>
"""