使用Mailjet API和Python将内联图像插入电子邮件
我正在使用Mailjet并尝试将以编程方式生成的图像插入电子邮件正文。不幸的是,我没有看到身体中的图像,而是测试它时得到的结果: 图像未显示,下载和查看附件也不起作用 我一直在文档中工作,但没有成功 我的代码如下:使用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
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(数据=数据)