该图像不显示在字母的html布局中



我正试图发送一封带有html代码的电子邮件。我把我的形象放在里面。但是当收到邮件时,不显示图像。

<div class="header__container ">
<img src="mysite/logo.svg" alt="logo" class="header_img">
</div>

然而,它没有出现在电子邮件中。

<img src="https://ci6.googleusercontent.com/proxy/c33cuVIg8CI8ogTZFezJa6bgoZ97KqPgefyR9YPF6vSGfi1zqQFXkx3AMyB0h8hD338LoBPvMR7JTyIt3F0Y=s0-d-e1-ft#https://sherf201.pythonanywhere.com/logo.svg" alt="logo" class="CToWUd" data-bit="iit" jslog="138226; u014N:xr6bB; 53:W2ZhbHNlLDJd">

我在Img标签中得到这一行。我的邮件发送代码

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
try:
server.login(EMAIL_BOT, PASSWORD_BOT)

msg = MIMEMultipart('alternative')
part1 = MIMEText(message, 'html')
msg.attach(part1)

msg['From'] = EMAIL_BOT
msg['To'] = email
msg["Subject"] = name
server.sendmail(EMAIL_BOT, email, msg.as_string())

except Exception as ex:
print(ex)

我如何在我的html代码发送图像?

许多电子邮件客户端(Outlook也是)不支持SVG。如果您尝试在Outlook中手动插入SVG文件,您可能会发现它们被转换为JPEG图像。

另一个方面是,在大多数电子邮件客户端默认情况下,基于互联网的图像(托管在服务器上的任何地方)被阻止。为了避免这种情况,您需要将图像添加为附件,然后设置其Content-IDMIME头。之后,您可以使用以下标记引用消息正文(HTML)中附加的图像:

<img src="cid:MyContenttId">

我想在答案中添加一个代码,使您能够实现在信件中发送图像的能力。

server.login(EMAIL_BOT, PASSWORD_BOT)

msg = MIMEMultipart('alternative')
part1 = MIMEText(message, 'html')
msg.attach(part1)
img_data = open('filename', 'rb').read()
img = MIMEImage(img_data, name = os.path.basename('filename'))
img.add_header('Content-ID', '<image>'.format('filename'))
msg.attach(img)
msg['From'] = EMAIL_BOT
msg['To'] = email
msg["Subject"] = name
server.sendmail(EMAIL_BOT, email, msg.as_string())

然后在html:

<div class="header__container ">
<img src="cid:image" alt="logo" class="header_img">
</div>

最新更新