无法发送带有嵌入式图像的AWS SES电子邮件吗?

时间:2018-09-26 07:29:40

标签: amazon-web-services

对于我的应用程序,我正在用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

1 个答案:

答案 0 :(得分:0)

您所使用的图像必须具有完整的URL。例如https://yoururl.com/image.jpg

我使用的一种常见方式是将其上传到S3并对该图像使用S3网址。

请求完成后,您的lambda将被终止。因此,当您打开电子邮件时,lambda不会显示该图像。