Python win32com发送带有多个嵌入映像的电子邮件 outlook=win32com.client作为win32 mail=outlook.CreateItem(0) 对于范围内的j(列表) file=“C:desktop\\image{}.png”。格式(j) 附件=mail.Attachments.Add(文件) index=“ID{}”。格式(j) 附件.PropertyAccessor.SetProperty(“http://schemas.microsoft.com/mapi/proptag/0x3712001F“,索引) mail.HTMLBody=“image”%(j) mail.Send()
目的是将所有图像(0,1,2,…由“列表”定义的最大数量)嵌入电子邮件中。但现在却被困在for循环中。请问有什么方法可以达到这个目的?谢谢 在互联网上做了一些深入的研究之后,我找到了这个特殊问题的答案。解决方案是导入base64并使用它生成图像标记。我会在这里发布我的代码,这样你就可以自己尝试了Python win32com发送带有多个嵌入映像的电子邮件 outlook=win32com.client作为win32 mail=outlook.CreateItem(0) 对于范围内的j(列表) file=“C:desktop\\image{}.png”。格式(j) 附件=mail.Attachments.Add(文件) index=“ID{}”。格式(j) 附件.PropertyAccessor.SetProperty(“http://schemas.microsoft.com/mapi/proptag/0x3712001F“,索引) mail.HTMLBody=“image”%(j) mail.Send(),python,html-email,Python,Html Email,目的是将所有图像(0,1,2,…由“列表”定义的最大数量)嵌入电子邮件中。但现在却被困在for循环中。请问有什么方法可以达到这个目的?谢谢 在互联网上做了一些深入的研究之后,我找到了这个特殊问题的答案。解决方案是导入base64并使用它生成图像标记。我会在这里发布我的代码,这样你就可以自己尝试了 outlook = win32com.client as win32 mail = outlook.CreateItem(0) for j in range(list) file = "C:d
outlook = win32com.client as win32
mail = outlook.CreateItem(0)
for j in range(list)
file = "C:desktop\\image{}.png".format(j)
attachment = mail.Attachments.Add(file)
index = "ID{}".format(j)
attachment.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", index)
mail.HTMLBody = "<html><body> image <img src = ""cid:ID%s""></body></html>" % (j)
mail.Send()
将win32com.client作为win32导入
导入base64
def发送电子邮件(主题、文本、列表路径):
outlook=win32.Dispatch('outlook.application')
myItem=outlook.CreateItem(0)
myItem.Subject=Subject
列表\u电子邮件\u img=[]
img_标签=“”
对于范围内的i(len(列表路径)):
list_email_img.append(base64.b64编码(打开(list_img_路径[i],'rb').read()).decode('utf-8')。替换('\n','')
img_tag+=''.format(列表\u电子邮件\u img[i])
myItem.HtmlBody=“”\
{}
{}
“”格式(文本,img_标记)
myItem.To=”example@company.com"
myItem.CC=example@example.org'
myItem.Display()
myItem.Send()
希望这能有所帮助
import win32com.client as win32
import base64
def send_email(subject, text, list_img_paths):
outlook = win32.Dispatch('outlook.application')
myItem = outlook.CreateItem(0)
myItem.Subject = subject
list_email_img = []
img_tag = ''
for i in range(len(list_img_paths)):
list_email_img.append(base64.b64encode(open(list_img_paths[i], 'rb').read()).decode('utf-8').replace('\n',''))
img_tag +='<img alt="" src="data:image/png;base64,{}"/>'.format(list_email_img[i])
myItem.HtmlBody = """\
<html>
<head>{}</head>
<body>
<p>{}<br>
</p>
</body>
</html>
""".format(text, img_tag)
myItem.To = "example@company.com"
myItem.CC = 'example@example.org'
myItem.Display()
myItem.Send()