You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python用win32com操作Outlook新邮件时本地图片设置宽高失败如何解决

问题根因

直接使用本地文件系统路径作为邮件HTML内<img>标签的src属性,本身不符合HTML邮件的通用规范。Outlook对本地文件资源的加载有严格的安全限制,未设置宽高属性时的正常显示仅属于本地预览时的临时放行特例,添加width/height属性后触发了更严格的资源校验逻辑,直接拦截了本地图片加载。而网络图片属于Outlook允许加载的资源类型,因此添加宽高属性后仍可正常显示。

解决方案

要实现本地图片在Outlook邮件中正常显示且可自定义宽高的标准做法,是将图片作为内嵌附件添加到邮件中,再通过cid:协议引用图片,示例代码如下:

import os
import win32com.client as client
outlook = client.Dispatch('Outlook.Application')

mail = outlook.CreateItem(0)
icon_path = os.getcwd() + '\\test.jpg'

# 将本地图片添加为邮件内嵌附件
attachment = mail.Attachments.Add(icon_path)
# 给附件设置唯一的ContentID,用于HTML中cid引用
attachment.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", "test_img")

html_body = f'''
<img src="cid:test_img" width="100" height="200">
'''

mail.To = ''
mail.CC = ''
mail.Subject = ''
mail.HTMLBody = html_body
mail.Save()

注意事项

  • 不要直接在邮件HTML中使用本地绝对路径引用图片:这种写法仅在你本地预览时可能偶尔生效,收件人打开邮件时必然无法加载图片,同时也会频繁出现加载异常问题。
  • cid引用的名称需要和附件设置的ContentID完全一致,不要包含空格或特殊字符,避免引用失效。

内容的提问来源于stack exchange,提问作者User

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:45:03