如何在邮件中插入位于我的文档文件夹中的图像?

Posted

技术标签:

【中文标题】如何在邮件中插入位于我的文档文件夹中的图像?【英文标题】:How insert Image that is located in my documents folder in a mail? 【发布时间】:2022-01-17 10:44:03 【问题描述】:

我正在尝试在正文中发送一封电子邮件,其中包含我位于此文件夹中的图像:/Users/experiment/Documents/Opera Terza Gestionale/Opera_III_foto_concerto.jpg

我正在使用 Python 和 pycharm,这是代码,一切正常,但图像未加载,每次在我的邮件正文中看起来都是这样的:

如果我将图像放在我的 main.py 文件的同一目录中,它也不起作用(显然调用 Opera_III_foto_concerto.jpg 而不是以前的路径)。

这是我的代码:

def sendEmail(receiverAddresses, subject, body, imageInBodyPath, signature, attachmentsPaths):
    message = EmailMessage()
    message['Subject'] = subject
    message['From'] = 'my_mail'
    message['To'] = receiverAddresses

    bodyImageFileName = ''
    if os.path.isfile(imageInBodyPath):
        with open(imageInBodyPath, 'rb') as bodyImageFile:
            bodyImageFileName = os.path.basename(bodyImageFile.name)
            bodyImageFileName = os.path.splitext(bodyImageFileName)[0]

    message.add_alternative("""\
    <!DOCTYPE html>
    <html>
        <body>
            <p style=\"color:black\"><strong>""" + body + """</strong></p>
            <img src=\"""" + imageInBodyPath + """\" alt=\"""" + bodyImageFileName + """"\">
            <p style=\"color:black\"><strong>""" + signature + """</strong></p>
        </body>
    </html>
    """, subtype='html')

    with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
        smtp.login('my_mail', 'my_password')
        smtp.send_message(message)


if __name__ == '__main__':
    sendEmail(receivers, 'oggetto', myBody, image_path, mySignature, paths)



【问题讨论】:

即使您在计算机中指定了路径,您的电子邮件客户端也无法访问该路径(出于安全原因,它无法访问您的文件系统)。您必须将其作为附件发送。 @dangom 非常感谢您的回复,没有办法吗?当我使用 Google 邮件发送电子邮件时,我会按照我的要求将其添加到我的邮件正文中…… 查看此示例,了解如何修改代码以将文件作为附件发送:gist.github.com/rdempsey/22afd43f8d777b78ef22。您也许可以在电子邮件正文中发送它,但在这种情况下,您必须将图像上传到服务器,并将您的来源指向该 URL。尝试将路径设置为任何https://image/path.png,看看是否可行。 Google 会在幕后自动为您完成这项工作。 (当您将图像粘贴到答案中时堆栈溢出也是如此 - 它为它们生成一个 URL 并将其放入答案而不是您的本地路径)。 【参考方案1】:

听起来您在本地引用了您的图像。

将您的图像上传到可公开访问的服务器,并在代码中引用它,例如https://via.placeholder.com/200x200(如果您愿意,可以使用该 src 作为测试)。

例如&lt;img src=\"https://www.myimages.com/images""" + bodyImageFileName + """\" ...&gt;(如果这里的语法稍有错误,请见谅——我不是 python 专家)

这将显示内联图像(附加图像是另一回事,而不是您想要的)。

【讨论】:

以上是关于如何在邮件中插入位于我的文档文件夹中的图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的 iPhone App 文档目录中选择所有图像

如何插入数据 url/二进制文件以替换 libreoffice writer 文档中的图像?

如何把proe的三维图像导入到Word文档中。

如何在 Gallery App IOS 中显示文档目录中的图像?

当我在电子表格中插入图像然后将其转换为pdf时,我的应用程序脚本存在问题。该图像未出现在文档pdf中

将 EPS 图像插入 PostScript 文档