in lambda/workmail-integration-lambda/lambda_function.py [0:0]
def lambda_handler(event, context):
msg_id = event['messageId']
logger.info("An Email received with messageId : [{}]".format(msg_id))
raw_msg = workmail.get_raw_message_content(messageId=msg_id)
parsed_email = email.message_from_bytes(raw_msg['messageContent'].read())
logger.info("Email content is : {}".format(parsed_email))
from_ = parsed_email['From']
subject = parsed_email['Subject']
if parsed_email.is_multipart():
# Walk over message parts of this multipart email.
for part in parsed_email.walk():
content_type = part.get_content_type()
content_disposition = str(part.get_content_disposition())
if content_type == 'text/plain' and 'attachment' not in content_disposition:
text_content = part.get_payload(decode=True)
text_charset = part.get_content_charset()
break
else:
text_content = parsed_email.get_payload(decode=True)
text_charset = parsed_email.get_content_charset()
logger.info("Subject : [{}]".format(subject))
logger.info("From : [{}]".format(from_))
logger.info("body : [{}]".format(text_content))
if text_content and text_charset:
email_text = text_content.decode(text_charset)
start_classification_flow(email_text, subject, from_, msg_id)
else:
raise ValueError("Error while reading the email.")