Trouble Connecting AWS WorkMail with Lambda

0

I'm currently working on a project where I receive files via email and need to retrieve and upload them to an S3 Bucket. To streamline this process, I decided to utilize WorkMail. I've set up an organization and I'm using a domain provided by AWS since I'm still in the development phase of the project. Testing the functionality, I've successfully sent and received emails without any issues.

However, when attempting to automate the process using Lambda to process the emails, I encountered an error. Specifically, when trying to retrieve the emails using the boto3 client 'workmailmessageflow', I received an error indicating that it couldn't find the email in the inbox. I think its because the notification sent by Workmail could be wrong since in every documentation I've found is in the form

{
    "summaryVersion": "2018-10-10",
    "envelope": {
        "mailFrom" : {
            "address" : "from@example.com"
        },
        "recipients" : [
           { "address" : "recipient1@example.com" },
           { "address" : "recipient2@example.com" }
        ]
    },
    "sender" : {
        "address" :  "sender@example.com"
    },
    "subject" : "Hello From Amazon WorkMail!",
    "messageId": "00000000-0000-0000-0000-000000000000",
    "invocationId": "00000000000000000000000000000000",
    "flowDirection": "INBOUND",
    "truncated": false
}

but what I'm actually receiving is much more larger

{"notificationType":"Received","mail":{"timestamp":"2024-05-14T15:34:27.757Z","source":"XXXXXX@XXXXX.cl","messageId":"42vg46a0mlog5pkd0n2gul5iogipcrgol91d1rg1","destination":["XXXXX@XXXXX-aa.awsapps.com"],"headersTruncated":false,"headers":[{"name":"Return-Path","value":"<XXXXX@XXXXX.cl>"},{"name":"Received","value":"from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2052.outbound.protection.outlook.com [40.107.93.52]) by inbound-smtp.us-east-1.amazonaws.com with SMTP id 42vg46a0mlog5pkd0n2gul5iogipcrgol91d1rg1 for inavarrete@ccembonor-aa.awsapps.com; Tue, 14 May 2024 15:34:27 +0000 (UTC)"},{"name":"X-SES-Spam-Verdict","value":"PASS"},{"name":"X-SES-Virus-Verdict","value":"PASS"},{"name":"Received-SPF","value":"pass (spfCheck: domain of embonor.cl designates 40.107.93.52 as permitted sender) client-ip=40.107.93.52; envelope-from=inavarrete@embonor.cl; helo=NAM10-DM6-obe.outbound.protection.outlook.com;"},{"name":"Authentication-Results","value":"amazonses.com; spf=pass (spfCheck: domain of embonor.cl designates 40.107.93.52 as permitted sender) client-ip=40.107.93.52; envelope-from=XXXXX@XXXXX.cl; helo=NAM10-DM6-obe.outbound.protection.outlook.com; dkim=pass header.i=@embonorsa.onmicrosoft.com; dmarc=none header.from=XXXXX.cl;"},{"name":"X-SES-RECEIPT","value":"AEFBQUFBQUFBQUFHdHRIaGQ5ZE1OQUpiNVF4TzljRS9MVEdObmErUE1xejNnd2dnVWtKR2hBWEVFZUNHaUY2VnBrVVJlVzM3VnlMNTRkenpkWUlPM3k2SE1Rek9hclV1UHlzMGd1d3haMHQwSTBTeTMyd1pZMFRwKytDNFMzK1o2RSsxUEhxeXpObTNkZFRvblQ5N1EzL204SytBQ1V2d0NNMzlUYmVhbGRHd00wL0w0S0tJZ3dnejdFQ2hYUzVlcElQeE1PbzdQZnVIWGM1MXJPc1BIMGgzR29sckZRdEN6d21LWmhBSUxDZEpCRHNObUtaMTZyZ3NpK0g5SWJBbms5b2NTQVkvZzhyNmd3d2U0THNiSU5BbkpUUWNOMTVDTkZleW8zZ1hud2FqeTRYU3pFYWpjSFE9PQ=="},{"name":"X-SES-DKIM-SIGNATURE","value":"a=rsa-sha256; q=dns/txt; b=JBFA2oW3r012Jzm+sN1uYTbJIs2QZEzpJq/VZtQuOezL/CdItCE1kJfmuFn5CcBI/wXanqPZbUYhWiTZTHsz8a4hw6EI8pt1xQWmIVk/97gz46Vgfo8lxVDdLljD1gMTYSBgKMQH1OTptvNpntVT/USmpFB06xq/vcRDrE3JnIQ=; c=relaxed/simple; s=ug7nbtf4gccmlpwj322ax3p6ow6yfsug; d=amazonses.com; t=1715700873; v=1; bh=sZ6st0za0xQ7HI6ZMWu46Dx1qcDEr3OMmHwV2jovDIw=; h=From:To:Cc:Bcc:Subject:Date:Message-ID:MIME-Version:Content-Type:X-SES-RECEIPT;"},{"name":"ARC-Seal","value":"i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F0GlIik5SSzbe2WMhlKG3/Bmx3lf5yDzFOJ8bz0QFx3L4YvW2wDoz1f0qYBxwwcu7QX+pyNKsHOTKTYp0pLkwsjIcv6CzLO2N2grRprWHDS+Gg0pX/L84FG9d7p3goUoDeYBL2egkClRwt/6pufGJJmwxlXFcAvm/3UFjOi8EeEYD/UeRambhmQoyM1oqJLYkO3M4TP4jztM816SzBLMjlrSyhRecOonf0R04ckFvEN2AV9/yApiR1TS2+281HuNymOghcG2Kq3zjJIv2dmpXYbZ7TtK3zL0G2o9oVvNClVW8Mwukvf1pcvv1MwpuOUlO1v+ReKFyICWof10aSqOSQ=="},{"name":"ARC-Message-Signature","value":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=X99tMpuEqsQ6GAYc/6lMx+ZFUbvHgloPCIhPnS6/jL8=; b=MSjYufaR7Fo2Nxzqj8JCJ46lTyJB0eZEUOJXYB1FjwE+l7ERq1RUBTaKAQR5cw9vpuYm3WcwGqFQtXXeZAflH3l38UjJf/ZOj0g8oiZwDPu3vF9b32RbY2Cp7b3WGAt/j4r8E0CkSRlEVzxNpXhebV59j9Nxvyz1pm8+oi/p1vagrG5Ll08ATCz3Fnx1VNZCa93TaQDfcSntduLiRyUxwomSVSqy8UbXB5zK1SkhRYCWNQVZmMKpLmkdNw5a0iyt8wRirajvdV3aR3zaAlIFpY5Q5y/22kCctAZQYNegkAIzlIkQ7PkAmms7VdaV9kLvfSmg9XJORntSFZcNbVxa6g=="},{"name":"ARC-Authentication-Results","value":"i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=embonor.cl; dmarc=pass action=none header.from=embonor.cl; dkim=pass header.d=embonor.cl; arc=none"},{"name":"DKIM-Signature","value":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=embonorsa.onmicrosoft.com; s=selector1-embonorsa-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=X99tMpuEqsQ6GAYc/6lMx+ZFUbvHgloPCIhPnS6/jL8=; b=AodFKG/TWnRsp1wQdCAYyVSPju86x8Kldhlg3rfqNaHPwM8yZtQoLQ/reVzfAP89t5FtdW9kLh4z8BfyquJ2M9L8yqllGR1sJeESKscToe8PEpXqOKkFZUpZ4rY+MIF2w4Nie9gkROAUBfVSRe11iT1iNrl63P6MLK1F81iM+Fc="},{"name":"Received","value":"from SCYP215MB2491.LAMP215.PROD.OUTLOOK.COM (2603:10d6:300:8b::8) by CPUP215MB2161.LAMP215.PROD.OUTLOOK.COM (2603:10d6:103:1b0::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.26; Tue, 14 May 2024 15:34:25 +0000"},{"name":"Received","value":"from SCYP215MB2491.LAMP215.PROD.OUTLOOK.COM ([fe80::ac7e:3812:97db:aede]) by SCYP215MB2491.LAMP215.PROD.OUTLOOK.COM ([fe80::ac7e:3812:97db:aede%6]) with mapi id 15.20.7544.052; Tue, 14 May 2024 15:34:25 +0000"},{"name":"From","value":"Ivan Navarrete Jara <inavarrete@embonor.cl>"},{"name":"To","value":"\"inavarrete@ccembonor-aa.awsapps.com\" <inavarrete@ccembonor-aa.awsapps.com>"},{"name":"Subject","value":"Test 3"},{"name":"Thread-Topic","value":"Test 3"},{"name":"Thread-Index","value":"AQHaphQzc6BlAA1mEU2cs9/r7SjAUA=="},{"name":"Date","value":"Tue, 14 May 2024 15:34:25 +0000"},{"name":"Message-ID","value":"<SCYP215MB2491842EE57E77EF85891E51A8E32@SCYP215MB2491.LAMP215.PROD.OUTLOOK.COM>"},{"name":"Accept-Language","value":"es-ES, en-US"},{"name":"Content-Language","value":"es-ES"},{"name":"X-MS-Has-Attach","value":"yes"},{"name":"X-MS-TNEF-Correlator","value":""},{"name":"msip_labels","value":""},{"name":"authentication-results","value":"dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=embonor.cl;"},{"name":"x-ms-publictraffictype","value":"Email"},{"name":"x-ms-traffictypediagnostic","value":"SCYP215MB2491:EE_|CPUP215MB2161:EE_"},{"name":"x-ms-office365-filtering-correlation-id","value":"459a51a3-e6a3-48db-cbe3-08dc742b55f6"},{"name":"x-ms-exchange-senderadcheck","value":"1"},{"name":"x-ms-exchange-antispam-relay","value":"0"},{"name":"x-microsoft-antispam","value":"BCL:0;ARA:13230031|366007|1800799015|376005|38070700009;"},{"name":"x-microsoft-antispam-message-info","value":"J4f4iVVNCtrKdUz8Q9sF518Nlfr9GICRwyuzU+wIRiW73fO/HGrCi0YnrRhT3oFuRFu351ZHJNUyaiC9KYYjOS+zvV1cWI2jxljdxm9Mk1joA5cHWrnPCrDb/zG6ITNSmUqI6c8XzL91HPYTvsa3U1CBMuaQthB5HWo0IPgbSLXCIov0I4TnVGbpVIiyStmAtwcBN6AoHmgdp9kYe/QM8Asqo1F6Y9Yl7aWkP/GUsK+gYyRIoCKfkE9aNe9behbAXBRZWzAnw1bo8q9dYwjx6shcZvWDDLyNdeDmVazuDsjHRcI3sGoSZnbhWP/1SG7dkP1OtZ4P4SEix5rStyKOu9DUqVru8NBqZWcZeuQV99XMJ54l9zFDhm4VoGCh/DRn4DM3pyGaHy9XnVoUESzBC3J5U2PH7dPSCKInPOQJNkSWiE1E1IXybeYFnX1OhKeEoNMUVc2bY69B0B8kmZtvcaUcb5Cw3gYsMV/9d1GskjR14m0HrKICBDq9d8+ykxcPvMrdR6xDarFa3oV6S4hq0EpeL4Jmv7B2UWNR13kn9KGcblqxFnQG4XeajkonCM6+QY8cQh8f6lnbBAfUMlWxZ183uLUhJrBlYIVrMxsSZ/ter6r0/+vDWGZtSyOLzDFp9MuMjAdUDMLCsjk5RjrngDJvORW7ZLUjunRkMvtPVOLLrL9JOGDyn4CxK8O5Vp9NJSK/ZECkzWOCQ1BwHX6eqaMPvIsdL5mqOqmZt7YQSmBzvfUUzDYLGY75cUgJbKkzm02QGe+1/6YmYpW/xy41QlYjlBLb4KgB4kFIw0BuLGopKD33gidf8WiCD7KO+O6jt1zHVQSiO8gbyqKU+fEYdq2AsVJPpyQpOrRiF2JqHMhUAbX56tDfcsxBn2PXkD1DkkC5ul9zHu3o4K0uEt1wmkpUkVTCDgfpNHixTI1fomL4mGzsZ3FAeQgUBU1YU2aMIYspzq4gfbJF4SEaEswhK0gDN924r1A32auEO0JxhheQWan/16VDWxv+AiYlXxm2yjGh7wntjZOLOqu2EHagqL1uQxmIGQ5RgB4rB2IBGCs8j/Ar3NCogefsj9SI3IZb"},{"name":"x-forefront-antispam-report","value":"CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SCYP215MB2491.LAMP215.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230031)(366007)(1800799015)(376005)(38070700009);DIR:OUT;SFP:1101;"},{"name":"x-ms-exchange-antispam-messagedata-chunkcount","value":"1"},{"name":"x-ms-exchange-antispam-messagedata-0","value":"Jq/LRkvJmrQltKrfXhPsKeq/Nm6oo95ym5Y/aECMD2YItPS1e+zKZfDf3WUn6knc1lwP+5fDKxI3RKmImO+utXqLOcdx6m122vrPYeHQUYvqkV5hRusCuFaxCKfZC4i2occrwycuZejlj4mEFYMfA/CK0QSBKVmpS7vrsJroEcYM+QwvXabgvBubYLYbFbtMSChKxHtnRc8t7HHe25jGsHu3uEqQxwKWhUHS39Srtb5q3sO7rRLIMJpNQdIvAZJbhBzniOQC9Ijh0iUGaFvNJ4R3UuMsjI1rxT76VPX/B+GDDO6xqWGc0VeySD1fQli8PbwuhE4dd3apo/M4PnE00GQX1JOLAlpisbGYh8i/ZNkeqx1XWc5hXvtkRoInk/KIjeRefVaXvc3A6KW7oZ/vbcbd/zrzN+P6MKtg/mP6Ja4JqDabtbJJCcaqxAxHpyz98SpZqcGu9XzsVF/xjqlyEUpjU4xTUs+I2ECaTS6Hx8xfkMtQpYG86uQxmd+rqxhlq1sRPBz6LNf9GQWV58cD9AAYGRe4WOWx3qW1SxEk7UDNxZzen/WavvGThNcNkHWDEPNUXlZ6P8OJOEEH+hIX1lWdZUnu/x9wQG0LJJWX7zlR+VFSE6NdpMYz3nUG0TkPmuJ6sBIDLy5gPihViHcKf92oBf0ZuACcA4+I30A+NvX1z+xBZzVMomb9m9LYftZjEfH4CSdi6of4rAjezWVkdeh6AtSCvHBQZJIEq/kUB1QsVLU9Y0lgN1fSgRBpDx3fBJ1SNUaulDOmopSryt9kAve6gv+N+6f05JrmfeHGfOQ6AfROl6+ncjJYFFmzJLc9iuRC+5FTq2UIdOOWjgnRsOafCS2qiFj6xtTHgov8y+7815OxerIJyNX6kWrQUcdUQud6XLb3XEoeCw11+gy8lQarZGzpQPnAuJ7NubNq68o9VwHD+3KjG65BkXmf1FAFr9LYwRw/LFSYvPPV5sWUo+UKLH5EwhRahIr3jwJzr4YihgPYKsAisktUq+hLSNClX92mbO7OVKmktWtZPOX+NdoSuanOXmvwvfHtig6AsB4ZZOkAN8TbyGCyZtoGxv3iIs32XRXKkOpUEbPYmxaWPIkIKStbzNfOguILbyKrdnRKgbTAIb0I0uOIi7Fms0SzvAK5SbcbocOwN7IkLrHJkeCyWu7ky9gim3PXIHhHH5KelAYx+EDAbH3AVeHuS8S8GThr4v1UJ17sxPHf0onYLKWmSXF05bV1ia/mBqoCCcli2mKjKU5qWzyyfdandsyMCmR+elzMNvMyaAb5yTFDUmM6FV9rZGRe032faTzzLAX6/rQEJKqd7JznFn+CAKpAqt45mkPC0NQcLVNt2JvhB+lwoiqEZmzznEUAbdkuGG1YOTyhf4qC2gRTqZPQGucodqJXbJu2W7pC+FIGIm6aQ3jDrPGjbeeDQBZm1L3lZEvKQ9KWEme0kDZPNteMQ9iDHOr1tC+Ec5uqi5trquR1/qT8RZDEQlTug42Tsguk1zUbCb1FmhVf73rQ/G7IoTberx+F+4RjIcUWTpBODju7BGskduSL4V+u3MFgc5qCmxFq3u0WiY8a2yrhjg6j+6us"},{"name":"Content-Type","value":"multipart/related; boundary=\"_004_SCYP215MB2491842EE57E77EF85891E51A8E32SCYP215MB2491LAMP_\"; type=\"multipart/alternative\""},{"name":"MIME-Version","value":"1.0"},{"name":"X-OriginatorOrg","value":"XXXXX.cl"},{"name":"X-MS-Exchange-CrossTenant-AuthAs","value":"Internal"},{"name":"X-MS-Exchange-CrossTenant-AuthSource","value":"SCYP215MB2491.LAMP215.PROD.OUTLOOK.COM"},{"name":"X-MS-Exchange-CrossTenant-Network-Message-Id","value":"459a51a3-e6a3-48db-cbe3-08dc742b55f6"},{"name":"X-MS-Exchange-CrossTenant-originalarrivaltime","value":"14 May 2024 15:34:25.3982 (UTC)"},{"name":"X-MS-Exchange-CrossTenant-fromentityheader","value":"Hosted"},{"name":"X-MS-Exchange-CrossTenant-id","value":"09dad77a-dcb8-467e-b4d5-9c00c2adde5d"},{"name":"X-MS-Exchange-CrossTenant-mailboxtype","value":"HOSTED"},{"name":"X-MS-Exchange-CrossTenant-userprincipalname","value":"MabZwTRoPpEC9BDzy3eOm0ybamF8ycNTBqlbwqqoNYj7/hB4NfToL+AcraozE7NmDLT3G9oUEbMvU84vRTu48yElHMWbSLZzoM/yunaLoZY="},{"name":"X-MS-Exchange-Transport-CrossTenantHeadersStamped","value":"CPUP215MB2161"}],"commonHeaders":{"returnPath":"XXXXX@embonor.cl","from":["Ivan Navarrete Jara <XXXXX@XXXXX.cl>"],"date":"Tue, 14 May 2024 15:34:25 +0000","to":["\"inavarrete@ccembonor-aa.awsapps.com\" <XXXXX@ccembonor-aa.awsapps.com>"],"messageId":"<SCYP215MB2491842EE57E77EF85891E51A8E32@SCYP215MB2491.LAMP215.PROD.OUTLOOK.COM>","subject":"Test 3"}},"receipt":{"timestamp":"2024-05-14T15:34:27.757Z","processingTimeMillis":6359,"recipients":["XXXXX@ccembonor-aa.awsapps.com"],"spamVerdict":{"status":"PASS"},"virusVerdict":{"status":"PASS"},"spfVerdict":{"status":"PASS"},"dkimVerdict":{"status":"GRAY"},"dmarcVerdict":{"status":"GRAY"},"action":{"type":"WorkMail","topicArn":"arn:aws:sns:us-east-1:XXXXX:aa-textract-new-mail","organizationArn":"arn:aws:workmail:us-east-1:XXXXX:organization/m-XXXXX","instanceArn":"XXXXX:XXXXX:XXXXX:us-east-1:XXXXX:organization/m-4cddf5ffc55649219c707d8567ee80be"}}}

Has anyone else faced a similar issue with automating email processing through AWS WorkMail using Lambda? Any insights or suggestions on how to troubleshoot and resolve this problem would be greatly appreciated. Thank you!

2 Answers
2

What call did you make to get the info? It looks pretty similar with more header fields, which will vary with every message.

From that response, (i will reference it as header_response dictionary below), you should be able to call the following to get the message content.

client = boto3.client('workmailmessageflow')

response = client.get_raw_message_content(
    messageId=header_response['mail']['messageId']
)

Reference here: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/workmailmessageflow/client/get_raw_message_content.html#

Response will be a dictionary as below:

{
    'messageContent': StreamingBody()
}
profile pictureAWS
EXPERT
iBehr
answered 16 days ago
AWS
EXPERT
reviewed 15 days ago
0

Yes, I had a similar thought. Here's the approach I'm currently working on:

def lambda_handler(event, context):
    msg_Id = event['mail']['messageId']
    client = boto3.client('workmailmessageflow', region_name = 'us-east-1')

    try:
        response = client.get_raw_message_content(messageId=msg_Id)
        print(response)
    except client.exceptions.ResourceNotFoundException as e:
        error_message = {
            "errorMessage": str(e),
            "errorType": type(e).__name__,
            "requestId": context.aws_request_id,
            "stackTrace": e.__traceback__
        }
        print(error_message)

but I'm get the same error :

{
'errorMessage': 'An error occurred (ResourceNotFoundException) when calling the GetRawMessageContent operation: None',
 'errorType': 'ResourceNotFoundException', 
 'requestId': '3e18d16f-f2d7-4edc-9ae5-5006d44526db', 
 'stackTrace': <traceback object at 0x7f5cdf9fe4c0>}


answered 15 days ago
  • Hi,

    You need to get the message Id via: event['messageId'] not event['mail']['messageId'].

    Robin

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions