Migrar de la API Mail de App Engine a un servicio basado en SMTP

Para mejorar la seguridad del correo electrónico y garantizar un envío fiable de grandes volúmenes de correos, migra de la API Mail antigua a un servicio de proveedor de correo de terceros estándar que utilice el protocolo simple de transferencia de correo (SMTP), como SendGrid, Mailgun o Mailjet.

En esta guía se describe el proceso para migrar servicios de correo saliente de la API Mail a un servicio de correo basado en SMTP. Puedes aplicar estas instrucciones para migrar a cualquier proveedor de correo de terceros basado en SMTP o usar otro runtime compatible. En esta guía no se indican los pasos para migrar la mensajería entrante que usa una alternativa de terceros.

El estándar SMTP ofrece las siguientes ventajas con respecto a la antigua API Mail de App Engine:

  • Los servicios basados en SMTP mejoran la entrega de correo al reducir la probabilidad de que los correos se marquen como spam.

  • Con los servicios basados en SMTP, puedes acceder a informes analíticos detallados sobre las aperturas, los clics y los rebotes de los correos. Estos informes proporcionan información útil sobre cómo interactúan los usuarios con tus correos.

  • Tienes control total sobre tu reputación de remitente y la autenticación de correo.

  • Límites de envío diarios más altos que los de la API Mail antigua, con acceso a funciones avanzadas como las pruebas A/B, la segmentación y las plantillas.

Visión general del proceso de migración

El proceso de migración incluye los siguientes pasos:

  1. Configura el servicio de correo basado en SMTP para obtener tus credenciales SMTP.
  2. Verifica tu identidad de remitente para autenticarte con tu dominio o dirección de correo.
  3. Configura los archivos de origen con tus credenciales SMTP y el método de envío. Después, implementa tu aplicación.
  4. Prueba tu aplicación para comprobar la funcionalidad del correo electrónico.

Configurar el servicio de correo basado en SMTP

Crea una cuenta con un proveedor de correo de terceros estándar que utilice SMTP, como SendGrid, Mailgun o Mailjet, y obtén la siguiente información del proveedor que elijas:

  • Host SMTP: la dirección del servidor SMTP que se usa para enviar correo. Por ejemplo, smtp.sendgrid.net o example.mailjet.com.

  • Puerto: número de puerto de la conexión. Por ejemplo, 587 para el cifrado TLS.

  • Nombre de usuario: nombre de usuario de inicio de sesión SMTP de tu cuenta.

  • Contraseña o clave de API: la contraseña de tu cuenta o una clave de API, que actúa como contraseña de la conexión SMTP. En el caso de algunos proveedores, como SendGrid, el nombre de usuario es un valor fijo, como apikey, y la clave de API se usa como contraseña.

Verificar tu identidad de remitente

Para evitar el spam, todos los servicios de correo requieren que verifiques que eres el propietario de la dirección de correo o del dominio desde el que envías correos. Este paso suele consistir en añadir detalles de DNS específicos, como registros CNAME, a la página de gestión de DNS del host de tu dominio.

Sigue las instrucciones de tu proveedor para verificar tu identidad de remitente antes de continuar con la configuración de la aplicación.

Para añadir registros DNS al host de tu dominio, sigue estos pasos:

  1. Inicia sesión en el servicio de tu proveedor de DNS.
  2. Accede a la página de gestión de DNS de tu dominio.
  3. Añade los registros CNAME exactamente como te los haya proporcionado tu proveedor de servicios de correo. En cada registro, haga lo siguiente:

    • En el campo Nombre o Host, introduce los detalles del host.
    • En el campo Puntos o Valor, introduce el valor.

Los cambios de DNS pueden tardar unas horas en activarse. Si no se puede completar la verificación, espera un tiempo y vuelve a intentarlo.

Configurar los archivos de origen

Para incluir la función SMTP, sigue estos pasos:

  1. Ejecuta el siguiente comando para actualizar el SDK de App Engine a la versión más reciente:

    # Ensure your virtual environment is active
    pip install --upgrade appengine-python-standard
    # Save the new version to your requirements file
    pip freeze > requirements.txt
    
  2. Añade el siguiente código al archivo app.yaml para cambiar al servicio SMTP:

    runtime: RUNTIME  # a supported python version
    
    env_variables:
      # Enable the SMTP service.
      APPENGINE_USE_SMTP_MAIL_SERVICE: "true"
    
      # --- SMTP Server Configuration ---
      # The server address from your mail provider
      APPENGINE_SMTP_HOST: "SMTP_HOST"
    
      # The recommended port for TLS connections
      APPENGINE_SMTP_PORT: "587"
    
      # The username for your SMTP login
      APPENGINE_SMTP_USER: "SMTP_USER"
    
      # The API key or password
      APPENGINE_SMTP_PASSWORD: "SMTP_PASSWORD"
    
      # Use TLS for a secure connection
      APPENGINE_SMTP_USE_TLS: "true"
    
      # --- For sending emails to Admins ---
      # A comma-separated list of admin email addresses.
      # This is required if you use the send_mail_to_admins() function.
      APPENGINE_ADMIN_EMAIL_RECIPIENTS: "admin@example.com,another-admin@example.com"
    

    Haz los cambios siguientes:

    • RUNTIME: una versión del entorno de ejecución de Python compatible.
    • SMTP_HOST: la dirección del host SMTP. Por ejemplo, smtp.sendgrid.net o example.mailjet.com.
    • SMTP_USER: nombre de usuario de inicio de sesión SMTP de tu cuenta. Por ejemplo, apiKey.
    • SMTP_PASSWORD: la contraseña o la clave de API que has obtenido de tu proveedor de correo de terceros. Para mejorar la seguridad, te recomendamos que uses Secret Manager para almacenar tu clave de API en lugar de colocarla en el archivo app.yaml.
    • Si no usas la función send_mail_to_admins(), omite el ajuste APPENGINE_ADMIN_EMAIL_RECIPIENTS.
  3. Ejecuta el siguiente comando para desplegar tu aplicación:

    gcloud app deploy
    

Probar la aplicación

La migración se habrá completado correctamente si puedes desplegar tu aplicación sin errores. Para comprobar que tu servicio de correo funciona, sigue estos pasos:

  1. Activa la parte de tu aplicación que envía un correo.
  2. Consulta el Explorador de registros para asegurarte de que no haya errores relacionados con las llamadas a la API o con el intento de conexión SMTP.
  3. Inicia sesión en la cuenta de tu proveedor de correo de terceros (por ejemplo, Mailgun, Mailjet o SendGrid) y consulta su feed de actividad, sus registros o su panel de control de entrega. El correo de prueba debería aparecer en el feed con un estado de entrega marcado como Processed, Delivered o similar.

Siguientes pasos