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

使用Win32 Python发HTML邮件时其他收件人无法查看图片的解决方法

解决建议

问题出在你直接引用了本地文件路径E:\\html5.gif——这个路径只在你的电脑上有效,收件人设备里没有这个文件,所以无法加载图片。正确的做法是把图片作为嵌入式附件加入邮件,再通过cid(Content ID)在HTML中引用它。

修改后的代码如下:

import win32com.client as win32
from win32com.client import constants

olApp = win32.Dispatch('Outlook.Application')
olNS = olApp.GetNameSpace('MAPI')

mailItem = olApp.CreateItem(0)
mailItem.Subject = 'test daily Email'
mailItem.BodyFormat = 1  # olFormatHTML
mailItem.To = 'testing it with my myself@outlook.com'
mailItem.Cc = 'others recepient@outlook.com'

# 添加图片作为嵌入式附件
attachment = mailItem.Attachments.Add(
    Source="E:\\html5.gif",
    Type=constants.olByValue,  # 指定为嵌入类型
    Position=0
)
# 设置附件的ContentID,用于HTML引用
attachment.PropertyAccessor.SetProperty(
    "http://schemas.microsoft.com/mapi/proptag/0x3712001F",
    "html5icon"  # 这个ID要和HTML里的cid对应
)

# HTML中用cid引用图片
mailItem.htmlBody = '''\
<html>
<body>

<h2>This is just a test</h2>

<p>Using it for test before production</p>

<img src="cid:html5icon" alt="HTML5 Icon" style="width:128px;height:128px;">

</body>
</html>
'''

mailItem.Save()
mailItem.Send()

关键说明:

  • constants.olByValue确保附件作为邮件内容的一部分嵌入,而非独立的附件显示。
  • 给附件设置的ContentID(这里是html5icon)要和HTML里src="cid:xxx"的xxx完全一致。
  • 这样收件人打开邮件时,图片会从邮件的嵌入式附件中加载,无需访问你的本地文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:55:14