Отправка письма AWS SES со встроенным изображением не работает? - PullRequest
0 голосов
/ 26 сентября 2018

Для своего приложения я пишу лямбда-функцию в python для отправки электронной почты из AWS SES.

К этому письму я пытаюсь прикрепить встроенное изображение, это изображение, которое я загружаю из корзины s3 в Lambdatmp файл, и я добавляю его в тело SES, используя «html content like ("<img src='/tmp/Marketing6.png' alt= 'image not found'/>») »для этого конкретного изображения.

Вот код для загрузки изображения из корзины 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

            )

Письмо, которое я получил: нажмите здесь

1 Ответ

0 голосов
/ 27 сентября 2018

Используемое изображение должно иметь полный URL.Например, https://yoururl.com/image.jpg

Один из распространенных способов, которыми я воспользовался, - это загрузить его на S3 и использовать URL-адрес S3 для этого изображения.

Ваша лямбда будет прервана после выполнения запроса.Поэтому у лямбды не будет этого изображения при открытии электронного письма.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...