我对编码世界比较陌生,并尝试使用以下 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()
如果有人能让我了解这里发生的事情,我将非常感激。 谢谢。
最佳答案
当您分配给 HTMLBody
时,您将覆盖您的 Body
,您的电子邮件客户端默认情况下必须使用 HTMLBody
。
因此,您需要将数据帧合并到 Body
字符串中,或者将您的 Body
作为 html 添加到另一个,这是一个示例:
email.HTMLBody = '<p>hi this is a test email</p><br>' + mailerr1
您还需要将其格式化为实际的 html,请参阅这个问题:Sending HTML email using Python
tl:博士
email.HTMLBody = """
<html>
<head></head>
<body>
<p>hi this is a test email</p><br>
""" + mailerr1 + """
</body>
</html>
"""
关于python - 在 python 中使用 win32 发送 Outlook 电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58230436/