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

plicqrtu  于 2022-11-19  发布在  其他
关注(0)|答案(2)|浏览(153)

我试图发送一封带有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代码中发送图像?

rqqzpn5f

rqqzpn5f1#

许多电子邮件客户端(Outlook也不支持SVG)。如果您尝试在Outlook中手动插入SVG文件,您可能会发现它们被转换为JPEG图像。
另一方面,大多数电子邮件客户端默认会阻止基于互联网的图片(托管在服务器上)。为了避免这种情况,您需要将图片添加为附件,然后设置其Content-ID MIME标头。之后,您可以使用以下标记在邮件正文(HTML)中引用附加的图片:

<img src="cid:MyContenttId">
mbzjlibv

mbzjlibv2#

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

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>

相关问题