【问题标题】:How to get image files working with the HTM tag <img src=> when absolute path contains whitespaces?当绝对路径包含空格时,如何使用 HTML 标签 <img src=> 获取图像文件?
【发布时间】:2022-10-04 17:23:58
【问题描述】:

我正在尝试使用 .htm 文件在 Outlook 电子邮件正文中嵌入本地托管的图片。如果相关,我正在使用win32com.client 包创建电子邮件。

.gif 文件的绝对路径:C:/Users/User/AppData/Roaming/Microsoft/Signatures/some folder/image.gif

.htm 文件内容:

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

如果我使用以下代码 sn-p 运行脚本,则创建的电子邮件不包含目标图片

from bs4 import BeautifulSoup

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

我确信这些问题会导致目标 .gif 文件的绝对路径中出现空格。如果我稍微修改代码以“删除”'%20' 并从包含空格的目录中删除空格(C:/Users/User/AppData/Roaming/Microsoft/Signatures/somefolder/image.gif),整个脚本将按预期运行。.gif 文件嵌入到电子邮件正文中。

from bs4 import BeautifulSoup

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

我试图寻找解决方案,但我发现它们都没有奏效。找到的解决方案都没有在本地计算机上托管具有绝对路径的文件。任何帮助,将不胜感激。

注意:我需要在 .htm 文件中定义目标 .gif 文件的绝对路径。否则,outlook 将找不到目标文件。我希望我已经足够具体了。

【问题讨论】:

    标签: python html python-3.x outlook html-email


    【解决方案1】:

    找到的解决方案都没有在本地计算机上托管具有绝对路径的文件。

    这是有充分理由的。如果任何人都可以访问您计算机上的所有文件,那么您的计算机将不会非常安全!

    这样做的唯一方法是将您的 gif 上传到网络服务器。您可以从您的计算机上运行您自己的程序,但这需要您 a) 只要人们可能查看电子邮件就让计算机运行,并且 b) 学习如何运行可远程访问的网络服务器。

    我强烈建议至少将文件托管在第三方网络服务器上以开始并克服这个困难。你可以使用imgur.com 之类的东西。

    【讨论】:

      【解决方案2】:

      在不提供一些实际示例的情况下,很难了解如何清理路径,但请尝试此解决方案。

      import html
      img['src'] = html.unescape(img['src']).strip()
      

      【讨论】:

        猜你喜欢
        • 2014-01-01
        • 2011-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多