gpt4 book ai didi

python - 使用python发送时如何在电子邮件签名中包含内联图像?

转载 作者:行者123 更新时间:2023-12-01 06:21:58 26 4
gpt4 key购买 nike

如何发送带有内嵌图像作为签名的 python 电子邮件?目前,我使用链接来显示图像,如下所示:

<img border="0" src="https://website.com/logo.png" role="presentation" alt="logo mail icon" style="max-width: 300px; width: 300px; display: block;">

但在 Outlook 中,图像未加载,用户需要单击“显示图像”,这会破坏电子邮件,因为我将其用于商业目的(它是注册的确认链接)。有没有办法如何内嵌显示图像并通过电子邮件而不是链接发送它们?

到目前为止我的代码:

from email.message import EmailMessage
import smtplib, ssl
import email.utils
import html2text

with open(html_template, 'r') as f:
html_string = f.read()

plain_text = html2text.html2text(html_string)

msg = EmailMessage()
msg['Subject'] = subject
msg['From'] = mail_address
msg['To'] = email_receiver
msg['Date'] = email.utils.formatdate()
msg.add_header('Content-Type','text/html')
msg.add_header('Content-Disposition', 'attachment', filename=file_attachment)
msg.set_content(plain_text)
msg.add_alternative(html_string.format(name=surname), subtype='html')

files = [file_attachment]
for file in files:
with open(file, 'rb') as f:
file_data = f.read()
file_name = f.name
msg.add_attachment(file_data, maintype='application', subtype='octet-stream', filename=file_name)

with smtplib.SMTP(smtp, port) as smtp:
smtp.ehlo()
smtp.starttls(context=ssl.create_default_context())
smtp.ehlo()
smtp.login(mail_address, mail_password)

try:
smtp.send_message(msg)
smtp.quit()

except Exception as e:
print('ERROR')

我找不到太多的方法或解决方案。我读过有关将图像编码为 Base64 的内容,但我有点困惑。

提前致谢!

最佳答案

要内嵌显示图像,您必须在电子邮件本身中提供图像数据。您可以使用图像数据的 base64 编码字符串来执行此操作。这是一个例子:

<img alt="Website" width="16" height="16" style="border:none;" src="data:image/png;filename=web.png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAABsAAAAbAFcG/0uAAABPElEQVQ4jaVT3U3DMBD+mgUSJqAbNEyQbkDYgL43Ejz7pUjkPZIHoBvUjNAJcDcoG7QTBH3mMzoikEC1dPL5/r+782wcR9jTdv09AFKD72cPYBu821rpV4C26+cAAoCF0Z91l0Z2oHnw7shHYZwjAN6PcnySLIo/S5ds5fMZQJlL0YNuOlaiONGV8sHsdv1MvC8AbhR9AHCNn8+7grD8NwCrQg17Dd7F4F1QRpZ8JbwH8ZRVtKEtfehbqNvB5EvlB+9OABKJP06aSZ+GEEZlOUnRmHctWe7HQuNEfhe/YP3zyQGG4N2SpPdGfBScpZoLYzfkMbKkdrI8ddv1eYSV+LlZLMhnPx0jMW/+M8a0ym3Xs9S8wjRigDsFS5AA7IwurXTwrs49YDksj0RsCUYeo3irIyXYF3+my74zgA9tApBUsNxB3wAAAABJRU5ErkJggg==" />

您可以使用online converters获取您的 Base64 字符串或直接在 Python 脚本中构建它:

import base64
encoded_string = base64.b64encode(open("image.png", "rb").read())

请记住,内联图像也可能被接收者邮件客户端阻止,因此请始终提供正确的alt 描述。

关于python - 使用python发送时如何在电子邮件签名中包含内联图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60316249/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com