如何在Python中使用win32com在邮件正文中添加2个变量?
我有一个邮件模板:
def email_tamplate(*args):
Format = { 'UNSPECIFIED' : 0, 'PLAIN' : 1, 'HTML' : 2, 'RTF' : 3}
profile = "Outlook"
#session = win32com.client.Dispatch("Mapi.Session")
outlook = win32com.client.Dispatch("Outlook.Application")
#session.Logon(profile)
mainMsg = outlook.CreateItem(0)
mainMsg.To = "myemail@amazon.com"
mainMsg.Subject = "Automated Crap Daily Update"
mainMsg.BodyFormat = Format['RTF']
mainMsg.HTMLBody = body2
mainMsg.Send() #this line actually sends the email
我想发送一封邮件,邮件内容里有两个表格。所以我有两个内容部分:
这是其中一个:
eod = []
body2 = ['<html><body><table border="1" style="width:300px"><tr><td>Title Level</td></tr><tr><td>Source</td><td>Count</td></tr>']
header = [['Title Level']]
for row in cur:
eod.append(row)
count=0
count2=0
for item in eod:
body2[0]=body2[0]+"<tr><td>"+str(eod[count2][count])+"</td><td>"+str(eod[count2][count+1])+"</td></tr>"
count2=count2+1
body2[0]=body2[0]+"</table></body></html>"
body2=body2[0]
globals().update(locals())
这是另一个:
eod = []
body = ['<html><body><table border="1" style="width:300px"><tr><td>Previous Day</td></tr><tr><td>Decision_Status</td><td>Count</td></tr>']
header = [['Prev Day']]
for row in cur:
eod.append(row)
count=0
count2=0
for item in eod:
body[0]=body[0]+"<tr><td>"+str(eod[count2][count])+"</td><td>"+str(eod[count2][count+1])+"</td></tr>"
count2=count2+1
body[0]=body[0]+"</table></body></html>"
body=body[0]
globals().update(locals())
这两个内容都是通过不同的数据查询生成的。
所以我想在邮件的内容中发送变量 body 和 body2。
有没有什么好主意可以实现这个?
谢谢!
2 个回答
0
其实不需要两个部分,你可以用 .format()
这个方法,把无限数量的变量放进一个部分里。
举个例子:
text ='some text'
table= pd.DataFrame([1,2,3])
msg.HTMLBody = '''<br>Hello, see this text:
<br>{text}<br>and this table:<br>{table}'''.format(text=text, table=table)
2
我刚刚解决了这个问题。其实我只需要把 body 和 body2 连接在一起就行了。
就是这么简单。谢谢你!