

现有的outlook发送邮件指令无法发送带有本地图片的邮件。
以下是提供代码方案
PS:插入图片必须用html格式编写正文
新建python模块代码,把以下代码追加到模块中:
import win32com.client
''''
mail_addr
收件地址
subject
主题
image_paths
所有本地图片列表
html_body
html文本,其中图片插入位置编写格式为<img src='cid:图片序号'>,例如插入第一张图<img src='cid:1'>
'''
def send_image(mail_addr,subject,image_paths,html_body):
# # 创建Outlook应用程序对象
outlook = win32com.client.Dispatch("Outlook.Application")
# 创建邮件对象
mail = outlook.CreateItem(0)
# 设置邮件的收件人
mail.To=mail_addr
# 设置邮件的主题和正文
mail.Subject = subject
# 插入本地图片到邮件内容中
for i in range(len(image_paths)):
image_path = image_paths[i]
attachment = mail.Attachments.Add(image_path)
attachment.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", str(i+1))
# 设置邮件的正文
mail.HTMLBody = html_body
# 发送邮件
mail.Send()演示案例html正文
<html>
<body>
<p style="font-size=20px">
<img src='cid:2' style="width: 100px; height: 70px;">
公主请打卡,王子请打卡
<img src='cid:3'style="width: 100px; height: 70px;">
</p>
<p style="font-size=20px">
<img src='cid:1'style="width: 80px; height: 50px;">
</p>
<p>来自刀刀的邀请</p>
</body>
</html>




收件效果:

有一种简易方案是:把图片转链接后插入链接到正文中,但是这样比较麻烦,图片转链接方式参考以下方案
https://www.yingdao.com/community/detaildiscuss?id=bd32a020-cdcc-4706-8ffc-4f9c44982a2e