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

解决Outlook邮件中<img>标签含空格绝对路径的图片加载问题

问题:Outlook嵌入本地带空格路径图片失败

我用.htm文件配合win32com.client包创建Outlook邮件,需要在正文嵌入本地图片。目标图片的绝对路径为:C:/Users/User/AppData/Roaming/Microsoft/Signatures/some folder/image.gif,对应的.htm文件中img标签内容是:

<img src='C:/Users/User/AppData/Roaming/Microsoft/Signatures/some%20folder/image.gif'>

尝试执行以下代码后,生成的邮件无法显示图片:

from bs4 import BeautifulSoup
import re

htm_path = 'C:/Users/User/AppData/Roaming/Microsoft/Signatures/signature.htm'
with open(htm_path, 'r', encoding='utf-8') as htm_file:
    soup = BeautifulSoup(htm_file.read(), 'html.parser')
    for img in soup.findAll('img'):
        img['src'] = re.sub('%20', ' ', img['src'])

我确认问题出在图片绝对路径里的空格。如果修改代码把%20替换为空,同时把实际目录名的空格去掉(路径改为C:/Users/User/AppData/Roaming/Microsoft/Signatures/somefolder/image.gif),脚本就能正常运行,图片可以正常嵌入邮件正文,对应的代码如下:

from bs4 import BeautifulSoup
import re

htm_path = 'C:/Users/User/AppData/Roaming/Microsoft/Signatures/signature.htm'
with open(htm_path, 'r', encoding='utf-8') as htm_file:
    soup = BeautifulSoup(htm_file.read(), 'html.parser')
    for img in soup.findAll('img'):
        img['src'] = re.sub('%20', '', img['src'])

我搜索过相关解决方案,但没找到针对本地绝对路径含空格场景的有效方法,希望能得到帮助。注:必须在.htm文件中指定图片的绝对路径,否则Outlook无法找到文件。


编辑(解决方案)

@MattieTK提出的方案需要将图片上传到服务器(比如Imgur),但我的脚本要分发给同事,且每位用户的图片文件名一致,这个方案不适用。我自己找到一个简单的解决方法:如果图片所在的相对路径包含空格,就在HTML文件的同目录下复制该目录(包含图片),复制后的目录名去掉空格即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:50:24