在 pywin32 outlook 电子邮件中发送 table
Send table in pywin32 outlook email
我使用类似下面的代码在 Python 中自动发送电子邮件。
如何使 table 看起来像是从 excel 复制到电子邮件中(即 table 格式)?目前它将 html 格式的 table 视为电子邮件正文中的文本,这是非常无用的。
import win32com.client
import pandas as pd
#Parameters
data= [{'A' : 'data', 'B': 2, 'C':1.78},
{'A' : 'data', 'B': 22, 'C':1.56},]
table = pd.DataFrame(data)
subject = 'email subject'
body = '<html><body>' + table.to_html() + '</body></html>'
recipient = 'email@domain.com'
attachments = []
#Create and send email
olMailItem = 0x0
obj = win32com.client.Dispatch("Outlook.Application")
newMail = obj.CreateItem(olMailItem)
newMail.Subject = subject
newMail.Body = body
newMail.To = recipient
for location in attachments:
newMail.Attachments.Add(Source=location)
newMail.display()
newMail.Send()
当我希望它是真实的时发送看起来像这样的电子邮件 table:
<html><body><table border="1" class="dataframe">
<thead>
<tr style="text-align: left;">
<th>A</th>
<th>B</th>
<th>C</th>
</tr>
</thead>
<tbody>
<tr>
<td> data</td>
<td> 2</td>
<td> 1.78</td>
</tr>
<tr>
<td> data</td>
<td> 22</td>
<td> 1.56</td>
</tr>
</tbody>
</table></body></html>
我知道怎么做了。需要在原代码中改一行代码。而不是使用:
newMail.Body = body
改为这样做:
newMail.HTMLBody = body
我使用类似下面的代码在 Python 中自动发送电子邮件。
如何使 table 看起来像是从 excel 复制到电子邮件中(即 table 格式)?目前它将 html 格式的 table 视为电子邮件正文中的文本,这是非常无用的。
import win32com.client
import pandas as pd
#Parameters
data= [{'A' : 'data', 'B': 2, 'C':1.78},
{'A' : 'data', 'B': 22, 'C':1.56},]
table = pd.DataFrame(data)
subject = 'email subject'
body = '<html><body>' + table.to_html() + '</body></html>'
recipient = 'email@domain.com'
attachments = []
#Create and send email
olMailItem = 0x0
obj = win32com.client.Dispatch("Outlook.Application")
newMail = obj.CreateItem(olMailItem)
newMail.Subject = subject
newMail.Body = body
newMail.To = recipient
for location in attachments:
newMail.Attachments.Add(Source=location)
newMail.display()
newMail.Send()
当我希望它是真实的时发送看起来像这样的电子邮件 table:
<html><body><table border="1" class="dataframe">
<thead>
<tr style="text-align: left;">
<th>A</th>
<th>B</th>
<th>C</th>
</tr>
</thead>
<tbody>
<tr>
<td> data</td>
<td> 2</td>
<td> 1.78</td>
</tr>
<tr>
<td> data</td>
<td> 22</td>
<td> 1.56</td>
</tr>
</tbody>
</table></body></html>
我知道怎么做了。需要在原代码中改一行代码。而不是使用:
newMail.Body = body
改为这样做:
newMail.HTMLBody = body