Как заставить Python AWS Lambda открывать электронную почту, хранящуюся в S3, как объект электронной почты - PullRequest
0 голосов
/ 04 января 2019

Я понимаю, что это полный вопрос, и, надеюсь, существует простое решение.Однако я застрял и обращаюсь к вам за помощью!Я пытаюсь сделать следующее: у меня есть набор правил SES, который хранит электронные письма в моем контейнере S3.Конкретные электронные письма, которые я храню, содержат вложение .txt.Я надеюсь, что у меня будет функция Lambda, которая запускается в функции S3 корзины «Создать», открывает вложение электронной почты И, а затем выполняет некоторую другую обработку на основе определенного текста во вложении электронной почты.

Мой конкретный вопрос заключается в следующем: Как мне разрешить функции Lambda принимать "объект" электронной почты S3 и преобразовывать его в стандартный объектный формат "сообщения" Python, чтобы я мог использоватьЭлектронная библиотека Python против этого?

Вот что у меня есть до сих пор ... не так много, я знаю:

import boto3
import email

def lambda_handler(event, context):
s3 = boto3.client("s3")

if event: 

    print("My Event is : ", event)
    file_obj = event["Records"][0]
    filename = str(file_obj["s3"]['object']['key'])
    print("filename: ", filename)
    fileObj = s3.get_object(Bucket = "mytestbucket", Key=filename)
    print("file has been gotten!")

    #Now that the .eml file that was stored in S3 is stored in fileObj, 
    #start parsing it--but how to convert it to "email" class???
    #??????

1 Ответ

0 голосов
/ 04 января 2019

Можете ли вы попробовать что-то подобное?При этом вы получите объект msg из потока, который вы открыли с помощью файла S3.

import boto3
import email

def lambda_handler(event, context):
s3 = boto3.client("s3")

if event: 

    print("My Event is : ", event)
    file_obj = event["Records"][0]
    filename = str(file_obj["s3"]['object']['key'])
    print("filename: ", filename)
    fileObj = s3.get_object(Bucket = "mytestbucket", Key=filename)
    print("file has been gotten!")
    msg = email.message_from_bytes(fileObj['Body'].read())
    print(msg['Subject'])
    #Hello
...