对于我的应用程序,我正在用python编写一个lambda函数,用于从AWS SES发送电子邮件。
对于这封电子邮件,我试图附加一个嵌入式图像,该图像是我从s3存储桶下载到Lambda tmp文件,并使用“("<img src='/tmp/Marketing6.png' alt= 'image not found'/>
之类的html内容”将其添加到SES正文中该特定图像。
这是用于将图像从S3存储桶下载到Lambda tmp的代码:
fileName =None
s3 = boto3.resource('s3')
bucket =s3.Bucket('examplebucket')
for obj in bucket.objects.all():
photoFileNameData = obj.key
fileName = str(base64.b64encode(obj.get()['Body'].read()))
fileName = fileName[2:-1]
print(fileName)
photoDatainBytes = bytes(fileName, 'utf-8')
with open('/tmp/Marketing6.png ', "wb") as fh:
fh.write(base64.decodebytes(photoDatainBytes))
data = open('/tmp/Marketing6.png ', 'rb')
print(data)
我给出的正文:
BODY_TEXT = ("Dear "+PlayerID+",\r\n\r\n"
"<img src='/tmp/Marketing6.png' alt= 'image not found'/>"
)
SUBJECT = "Player name has been created "
try:
response = client.send_email(
Destination={
'ToAddresses': [
RECIPIENT,
],
},
Message={
'Body': {
'Html': {
'Charset': CHARSET,
'Data': BODY_TEXT,
},
'Text': {
'Charset': CHARSET,
'Data': BODY_TEXT,
},
},
'Subject': {
'Charset': CHARSET,
'Data': SUBJECT,
},
},
Source=SENDER
)
我收到的邮件: click here
答案 0 :(得分:0)
您所使用的图像必须具有完整的URL。例如https://yoururl.com/image.jpg
我使用的一种常见方式是将其上传到S3并对该图像使用S3网址。
请求完成后,您的lambda将被终止。因此,当您打开电子邮件时,lambda不会显示该图像。