我对编码世界还比较陌生,因此尝试使用以下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()
如果有人可以告诉我这里发生的事情,我将非常感谢。 谢谢。
答案 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>
"""