【问题标题】:Sending AWS SES email with embedded image is not working?发送带有嵌入图像的 AWS SES 电子邮件不起作用?
【发布时间】:2019-03-01 21:48:59
【问题描述】:

对于我的应用程序,我正在用 python 编写一个 lambda 函数,用于从 AWS SES 发送电子邮件。

对于这封电子邮件,我正在尝试附加一个嵌入式图像,我正在从 s3 存储桶下载该图像到 Lambda tmp 文件,并使用“html 内容(如 ("<img src='/tmp/Marketing6.png' alt= 'image not found'/>")”将其添加到 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

【问题讨论】:

    标签: amazon-web-services


    【解决方案1】:

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

    我使用的一种常见方法是将其上传到 S3 并使用该图像的 S3 url。

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

    【讨论】:

      猜你喜欢
      • 2016-12-25
      • 1970-01-01
      • 2012-04-07
      • 1970-01-01
      • 2017-09-28
      • 2021-10-31
      • 2019-12-07
      • 1970-01-01
      • 2022-11-25
      相关资源
      最近更新 更多