使用Mailjet API和Python将内联图像插入电子邮件

使用Mailjet API和Python将内联图像插入电子邮件,python,email-attachments,plotly-python,mailjet,Python,Email Attachments,Plotly Python,Mailjet,我正在使用Mailjet并尝试将以编程方式生成的图像插入电子邮件正文。不幸的是,我没有看到身体中的图像,而是测试它时得到的结果: 图像未显示,下载和查看附件也不起作用 我一直在文档中工作,但没有成功 我的代码如下: import os from mailjet_rest import Client import numpy as np import plotly.graph_objects as go import base64 MAILJET_KEY = os.environ.get(&q

我正在使用Mailjet并尝试将以编程方式生成的图像插入电子邮件正文。不幸的是,我没有看到身体中的图像,而是测试它时得到的结果:

图像未显示,下载和查看附件也不起作用

我一直在文档中工作,但没有成功

我的代码如下:

import os
from mailjet_rest import Client
import numpy as np
import plotly.graph_objects as go
import base64

MAILJET_KEY = os.environ.get("MAILJET_KEY")
MAILJET_SECRET = os.environ.get("MAILJET_SECRET")
mailjet = Client(auth=(MAILJET_KEY, MAILJET_SECRET), version='v3.1')

filename = 'sample1.png'
# Plotly code taken from: https://plotly.com/python/static-image-export/
N = 100
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
sz = np.random.rand(N) * 30

fig = go.Figure()
fig.add_trace(go.Scatter(
    x=x,
    y=y,
    mode="markers",
    marker=go.scatter.Marker(
        size=sz,
        color=colors,
        opacity=0.6,
        colorscale="Viridis"
    )
))

# Save image
fig.write_image(filename)

# Base64 Encode
with open(filename, 'rb') as file:
    encode64 = base64.b64encode(file.read())

cid = "id1"
data = {
    'Messages': [
        {
            "From": {
                "Email": "myemail@mydomain.com",
                "Name": "Mailjet API Image Test"
        },
            "To": [{
                "Email": "myemail@gmail.com",
                "Name": "My Name"
            }],
            "Subject": "Can I insert an image inline?",
            "TextPart": "Here's a random plot for your enjoyment!",
            "HTMLPart": ("<h3>We're putting an image inline:<br/>" +
                        f"<img src=\"cid:{cid}\">" +
                        "<br/>Other text below."),
            "InlinedAttachments": [{
                "ContentType": "image/png",
                "Filename": filename,
                "ContentID": cid,
                "Base64Content": str(encode64)
            }]
        }
    ]
}
result = mailjet.send.create(data=data)
导入操作系统
从mailjet_rest导入客户端
将numpy作为np导入
导入plotly.graph_对象作为go
导入base64
MAILJET\u KEY=os.environ.get(“MAILJET\u KEY”)
MAILJET\u SECRET=os.environ.get(“MAILJET\u SECRET”)
mailjet=Client(auth=(mailjet\u KEY,mailjet\u SECRET),版本='v3.1')
文件名='sample1.png'
#绘图代码取自:https://plotly.com/python/static-image-export/
N=100
x=np.random.rand(N)
y=np.random.rand(N)
颜色=np.random.rand(N)
sz=np.rand.rand(N)*30
图=go.Figure()
图添加轨迹(go.District(
x=x,
y=y,
mode=“markers”,
marker=go.scatter.marker(
尺寸=sz,
颜色=颜色,
不透明度=0.6,
colorscale=“绿色”
)
))
#保存图像
fig.write_图像(文件名)
#Base64编码
打开(文件名为“rb”)作为文件:
encode64=base64.b64encode(file.read())
cid=“id1”
数据={
“消息”:[
{
“发件人”:{
“电子邮件”:myemail@mydomain.com",
“名称”:“Mailjet API图像测试”
},
“致”:[{
“电子邮件”:myemail@gmail.com",
“姓名”:“我的姓名”
}],
“主题”:“我可以内联插入图像吗?”,
“TextPart”:“这是一个供您欣赏的随机情节!”,
“HTMLPart:”(“我们正在内联放置一个图像:
”+ f“+ “
下面的其他文本。”), “内联附件”:[{ “ContentType”:“image/png”, “文件名”:文件名, “ContentID”:cid, “Base64Content”:str(encode64) }] } ] } 结果=mailjet.send.create(数据=数据)