如何在邮件中插入位于我的文档文件夹中的图像?
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 作为测试)。
例如<img src=\"https://www.myimages.com/images""" + bodyImageFileName + """\" ...>
(如果这里的语法稍有错误,请见谅——我不是 python 专家)
这将显示内联图像(附加图像是另一回事,而不是您想要的)。
【讨论】:
以上是关于如何在邮件中插入位于我的文档文件夹中的图像?的主要内容,如果未能解决你的问题,请参考以下文章
如何插入数据 url/二进制文件以替换 libreoffice writer 文档中的图像?
如何在 Gallery App IOS 中显示文档目录中的图像?