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

Python调用Outlook发送嵌入PNG图片的邮件图片无法加载求助

问题排查

  • 语法错误:原代码中<br>直接写在Python代码行末尾属于无效语法,循环for i in range(1,5)末尾缺失冒号,message.Send是调用方法需要加括号message.Send()否则不会实际执行发送动作
  • 遍历范围错误:range(1,5)生成的是1-4的整数,你的5.png不会被加入邮件内容
  • 图片引用逻辑错误:直接把本地图片名写在HTML的src属性里,邮件客户端无法读取你本地的文件路径,必须将图片作为隐藏附件添加到邮件,再通过cid(内容ID)在HTML中引用
  • 标签写法错误:HTML标准图片标签为<img>,不是<image>

修正后实现方案

该方案不影响你插入DataFrame的需求,直接将DataFrame转成HTML字符串拼入message_string即可正常显示。

import win32com.client as client
import os

# 替换为你本地存放1.png-5.png的文件夹路径
img_root = r"C:\你的图片存放目录"

message_string = 'This is my string<br>'
outlook = client.Dispatch('Outlook.Application')
message = outlook.CreateItem(0)
message.To = 'testemail@test.com.au'
message.Subject = 'this is my test email'

for i in range(1, 6):
    img_path = os.path.join(img_root, f"{i}.png")
    # 添加图片为邮件附件
    attach = message.Attachments.Add(img_path)
    # 为附件设置唯一的内容ID,用于HTML内引用
    cid = f"pic_{i}"
    attach.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", cid)
    # 拼接图片到HTML内容中
    message_string += f'<br><img src="cid:{cid}" alt="图片{i}"><br>'

# 此处可以拼接你的DataFrame转HTML结果,示例:
# import pandas as pd
# df = pd.DataFrame({'测试列1':[1,2,3], '测试列2':[4,5,6]})
# message_string += df.to_html(index=False)

message.HTMLBody = message_string
message.Send()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:18:03