

Aviso de fin de soporte: el 31 de marzo de 2027 AWS finalizará el soporte para Amazon WorkMail. Después del 31 de marzo de 2027, ya no podrás acceder a la WorkMail consola de Amazon ni a los WorkMail recursos de Amazon. Para obtener más información, consulta el [ WorkMail fin del soporte de Amazon](https://docs.aws.amazon.com/workmail/latest/adminguide/workmail-end-of-support.html). 

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Actualización del contenido de los mensajes con AWS Lambda
<a name="update-with-lambda"></a>

Tras configurar una AWS Lambda función sincrónica para gestionar los flujos de correo electrónico, puede utilizar la `PutRawMessageContent` acción en la API de flujo de WorkMail mensajes de Amazon para actualizar el contenido de los mensajes de correo electrónico en tránsito. Para obtener más información sobre cómo empezar a utilizar las funciones de Lambda para Amazon WorkMail, consulte. [Configuración de reglas de **Ejecutar Lambda** sincrónicas](lambda.md#synchronous-rules) Para obtener más información sobre la API, consulte [ PutRawMessageContent](https://docs.aws.amazon.com/workmail/latest/APIReference/API_messageflow_PutRawMessageContent.html).

**nota**  
La PutRawMessageContent API requiere boto3 1.17.8, o puede añadir una capa a la función Lambda. [Para descargar la versión correcta de boto3, consulta la página de boto en. GitHub](https://github.com/boto/boto) Para obtener más información sobre cómo añadir capas, consulte [Configuración de una función para utilizar capas](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html#configuration-layers-using).   
Este es un ejemplo de capa: `"LayerArn":"arn:aws:lambda:${AWS::Region}:489970191081:layer:WorkMailLambdaLayer:2"`. En este ejemplo, sustituya `${AWS::Region}` por una región de aws apropiada, como us-east-1.

**sugerencia**  
Si comienza por implementar la [función Lambda de Amazon WorkMail Hello World](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:489970191081:applications/workmail-hello-world-python) desde el AWS Serverless Application Repository en su cuenta, el sistema creará una función Lambda en su cuenta con los recursos y permisos necesarios. A continuación, puede añadir su lógica empresarial a la función de Lambda en función de sus casos de uso.

A medida que avance, recuerde lo siguiente:
+ Utilice la [ GetRawMessageContent](https://docs.aws.amazon.com/workmail/latest/APIReference/API_messageflow_GetRawMessageContent.html)API para recuperar el contenido original del mensaje. Para obtener más información, consulte [Recuperar el contenido de los mensajes con AWS Lambda](lambda-content.md).
+ Una vez que tenga el mensaje original, cambie el contenido MIME. Cuando termine, suba el mensaje a un bucket de Amazon Simple Storage Service (Amazon S3) de su cuenta. Asegúrese de que el bucket de S3 utilice lo Cuenta de AWS mismo que sus WorkMail operaciones de Amazon y de que utilice la misma región de AWS que las llamadas a la API.
+ Para WorkMail que Amazon procese las solicitudes, tu bucket de S3 debe tener la política correcta para poder acceder al objeto de S3. Para obtener más información, consulte [Example S3 policy](#s3example).
+ Usa la [ PutRawMessageContent](https://docs.aws.amazon.com/workmail/latest/APIReference/API_messageflow_PutRawMessageContent.html)API para enviar el contenido actualizado del mensaje a Amazon WorkMail.

**nota**  
La `PutRawMessageContent` API garantiza que el contenido MIME del mensaje actualizado cumpla con los estándares de la RFC, así como con los criterios mencionados en el tipo de [RawMessageContent](https://docs.aws.amazon.com/workmail/latest/APIReference/API_messageflow_RawMessageContent.html)datos. Los correos electrónicos entrantes a tu WorkMail organización de Amazon no siempre cumplen con esos estándares, por lo que es posible que la `PutRawMessageContent` API los rechace. En tales casos, puede consultar el mensaje de error devuelto para obtener más información sobre cómo solucionar cualquier problema.

**Example Ejemplo de política S3**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "workmail.REGION.amazonaws.com"
            },
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::My-Test-S3-Bucket/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                },
                "Bool": {
                    "aws:SecureTransport": "true"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:workmailmessageflow:us-east-1:111122223333:message/WORKMAIL_ORGANIZATION_ID/*"
                }
            }
        }
    ]
}
```

En el siguiente ejemplo se muestra cómo una función de Lambda utiliza el tiempo de ejecución de Python para actualizar el asunto de un mensaje de correo electrónico en tránsito.

```
    import boto3
    import os
    import uuid
    import email
     
    def email_handler(event, context):
        workmail = boto3.client('workmailmessageflow', region_name=os.environ["AWS_REGION"])
        s3 = boto3.client('s3', region_name=os.environ["AWS_REGION"])
        
        msg_id = event['messageId']
        raw_msg = workmail.get_raw_message_content(messageId=msg_id)
        parsed_msg = email.message_from_bytes(raw_msg['messageContent'].read())
        
        # Updating subject. For more examples, see https://github.com/aws-samples/amazon-workmail-lambda-templates.
        parsed_msg.replace_header('Subject', "New Subject Updated From Lambda")
       
        # Store updated email in S3
        key = str(uuid.uuid4());
        s3.put_object(Body=parsed_msg.as_bytes(), Bucket="amzn-s3-demo-bucket", Key=key)
     
        # Update the email in WorkMail
        s3_reference = {
            'bucket': "amzn-s3-demo-bucket",
            'key': key
        }
        content = {
            's3Reference': s3_reference
        }
        workmail.put_raw_message_content(messageId=msg_id, content=content)
```

Para ver más ejemplos de formas de analizar el contenido de los mensajes en tránsito, consulta el [ amazon-workmail-lambda-templates](https://github.com/aws-samples/amazon-workmail-lambda-templates)repositorio en. GitHub