¡Bienvenido al último día de nuestra serie 12 Días de DigitalOcean! Hemos recorrido un largo camino, construyendo un Servicio de Procesamiento de Recibos Basado en Correo Electrónico que extrae detalles de recibos de Postmark utilizando el Agente GenAI de DigitalOcean, almacena de forma segura los archivos adjuntos en Espacios de DigitalOcean, y guarda los datos extraídos en Google Sheets.
Hoy, añadiremos el toque final: enviar correos electrónicos de confirmación al remitente con los detalles del recibo, enlaces a los archivos adjuntos y un enlace a la Hoja de Cálculo de Google. Este último paso une todo, asegurando que los usuarios reciban comentarios inmediatos de que sus recibos han sido procesados con éxito.
🚀 Lo que Aprenderás
Al final de este tutorial, sabrás cómo:
- Utilizar la API de Reenvío para enviar correos electrónicos de confirmación de forma programática.
- Administrar de forma segura credenciales sensibles utilizando variables de entorno.
- Formatear y enviar correos electrónicos transaccionales con detalles del recibo, enlaces de adjuntos y URL de hojas de cálculo.
- Probar y solucionar problemas en un flujo de trabajo completo de procesamiento de correos electrónicos.
🛠 Lo que necesitarás
Si deseas seguir construyendo, asumimos que has seguido el Día 11: Guardar datos del recibo y adjuntos en Google Sheets y ya tienes:
- Una aplicación Flask implementada para procesar correos electrónicos de recibo.
- Integración de Google Sheets y DigitalOcean Spaces configurada.
Si solo estás interesado en aprender cómo integrar Resend para enviar correos electrónicos de confirmación, necesitarás:
- Una cuenta de Resend: Regístrate en Resend.
- Una clave API: Genérala desde tu panel de Resend.
Paso 1: Crea una cuenta en Resend y obtén la clave API
Para enviar correos electrónicos de forma programática, utilizaremos Resend, una API amigable para desarrolladores que permite enviar correos electrónicos transaccionales. Simplifica el envío de correos electrónicos para que no tengas que lidiar con la configuración de un servidor de correo electrónico, gestionar configuraciones SMTP o preocuparte por los filtros de spam.
-
Primero, ve a Resend y regístrate para obtener una cuenta gratuita. Una vez iniciado sesión, ve a la sección de Claves API del panel de control y genera una nueva clave API.
-
Dale a tu clave API un nombre descriptivo, como
Aplicación Procesadora de Recibos
, y establece su permiso enAcceso Completo
. -
Copiar la clave de API: Tu clave de API se mostrará solo una vez, cópiala y guárdala de forma segura. La necesitarás en el próximo paso para autenticar tu aplicación con Resend.
Paso 2: Actualizar tus variables de entorno
Ahora que tenemos la clave de API de Resend, vamos a guardarla como una variable de entorno en DigitalOcean, tal como hemos estado haciendo a lo largo de esta serie.
Para la integración de Resend, necesitamos guardar dos variables de entorno:
RESEND_API_KEY
: La clave de API que generaste en el Paso 1, la cual autentica tu aplicación con Resend.RESEND_EMAIL_FROM
: La dirección de correo electrónico del remitente que utilizarás para enviar correos de confirmación. Esta debe ser una dirección verificada en tu cuenta de Resend.
Para añadir estas variables, sigue estos pasos:
- Dirígete a tu panel de control de DigitalOcean App Platform, encuentra tu aplicación Flask y navega a la pestaña de Configuración. Bajo Variables de entorno, agrega las dos variables:
-
Clave:
RESEND_API_KEY
- Valor: Pega la clave API que generaste en el Paso 1.
-
Clave:
RESEND_EMAIL_FROM
- Valor: Ingresa una dirección de correo electrónico verificada del remitente de tu cuenta de Resend.
-
-
Guarda tus cambios para hacer que la clave API de Resend esté disponible para tu aplicación Flask, que actualizaremos a continuación.
Paso 3: Instalar la biblioteca Resend Python
A continuación, instalaremos la biblioteca Resend Python para manejar la API por nosotros. Mantiene tu código limpio y evita tener que lidiar con solicitudes HTTP en bruto. Ejecuta esto en tu terminal:
Paso 4: Actualizar requirements.txt
En lugar de editar requirements.txt
manualmente, utiliza pip freeze
para listar todas las dependencias instaladas con versiones exactas. Ejecuta esto:
Esto actualiza requirements.txt
con todo lo que tu aplicación necesita, incluido resend
.
Paso 5: Escribir la función para enviar correos electrónicos
Ahora es el momento de añadir la lógica para enviar correos electrónicos de confirmación. Piensa en ello como enviar un correo electrónico a un amigo para hacerle saber que su paquete ha llegado, solo que aquí, es para recibos.
Vamos a escribir una función send_confirmation_email
que tome el correo del destinatario, los detalles del recibo, los enlaces de los archivos adjuntos y la URL de la Hoja de cálculo de Google. Utilizando Resend, formateará esto en un correo electrónico y lo enviará. Aquí está la función:
Paso 5: Implementar en DigitalOcean
Para implementar la aplicación Flask actualizada, sigue los pasos de Día 7: Construcción e Implementación del Procesador de Recibos Basado en Correo Electrónico. Aquí tienes un resumen rápido:
-
Sube tu Código Actualizado a GitHub: Después de hacer los cambios necesarios en tu aplicación Flask, haz commit y sube el código actualizado a GitHub. Esto desencadenará una implementación automática en la Plataforma de Aplicaciones de DigitalOcean.
-
Monitorear el despliegue: Puedes seguir el progreso en la sección de Despliegues del panel de tu aplicación.
-
Verificar tu despliegue: Después de que el despliegue se complete, navega hacia la URL pública de tu aplicación y prueba su funcionalidad. También puedes revisar los registros de tiempo de ejecución en el panel para confirmar que la aplicación inició correctamente.
-
Revisar los registros de tiempo de ejecución: Si algo no funciona como se espera, utiliza la pestaña de Registros de Tiempo de Ejecución en el panel de la Plataforma de Aplicaciones para depurar problemas de tiempo de ejecución. Busca cualquier error relacionado con la API de Reenvío u otros componentes de la aplicación.
Paso 5: Probar todo el flujo de trabajo
Ahora que tu aplicación está completamente configurada y lista, es momento de probar todo el flujo de trabajo. Nos aseguraremos de que el cuerpo del correo electrónico sea procesado, los adjuntos sean decodificados y subidos a DigitalOcean Spaces, los detalles del recibo y las URL de los adjuntos sean guardados en Google Sheets, y que se envíe un correo electrónico de confirmación al remitente.
Así es como puedes probar paso a paso:
-
Enviar un correo electrónico de prueba: Envía un correo electrónico a Postmark con un cuerpo de texto y un adjunto. Si no estás seguro de cómo configurar Postmark, revisa el Día 8: Conectar Postmark a tu Aplicación Flask, donde explicamos cómo configurar Postmark para reenviar correos electrónicos a tu aplicación.
-
Verificar JSON de actividad de Postmark: En el panel de Postmark, vaya a la pestaña Actividad. Localice el correo electrónico que envió y asegúrese de que la carga útil JSON incluya el cuerpo de texto y los datos adjuntos codificados en Base64. Esto confirma que Postmark está reenviando correctamente los datos del correo electrónico a su aplicación, tal como configuramos en el Día 8.
-
Monitorear los registros: Verifique los registros de tiempo de ejecución en el panel de control de la Plataforma de la aplicación de DigitalOcean para asegurarse de que la aplicación procese la carga JSON. Debería ver registros que muestren que los detalles del recibo fueron extraídos y que los archivos adjuntos fueron cargados en DigitalOcean Spaces. Puede acceder a los registros de tiempo de ejecución en la pestaña Registros del panel de control de la Plataforma de la aplicación de DigitalOcean. Si no está familiarizado con los registros de DigitalOcean, exploramos esto durante el Día 9: Automatización del Análisis de Recibos con el Agente GenAI de DigitalOcean.
-
Verificar la carga en Espacios: Visita tu Espacio de DigitalOcean para confirmar que los archivos se hayan subido correctamente. Deberías ver los adjuntos en tu depósito tal como se configuró en el Día 10: Almacenar Adjuntos en Espacios de DigitalOcean. Si todo salió como se esperaba, tus URLs de adjuntos serán accesibles.
-
Verificar Google Sheets: Abre tu Hoja de Cálculo de Google y confirma que se haya añadido una nueva fila con detalles del recibo y URLs de adjuntos, tal como lo configuramos en el Día 11: Guardar Detalles de Recibos en Google Sheets. La fila debería incluir:
- Vendedor, monto, divisa y fecha extraídos del cuerpo del correo electrónico.
- URLs separadas por comas de los adjuntos subidos en la última columna.
-
Verificar el Correo de Confirmación: Finalmente, revisa la bandeja de entrada de la dirección de correo electrónico del remitente para asegurarte de que se recibió el correo de confirmación. Este correo debería contener:
- Los detalles del recibo extraídos (proveedor, monto, divisa y fecha).
- Enlaces a los archivos adjuntos subidos en DigitalOcean Spaces.
- Un enlace a la Hoja de Cálculo de Google donde se registran los datos del recibo.
Resolución de problemas
Si el flujo de trabajo no funciona como se espera, aquí hay algunos pasos de resolución de problemas a seguir:
-
Comprueba el Panel de reenvío de correos electrónicos en busca de errores: Visita el panel de reenvío para ver si ocurrieron errores al enviar el correo de confirmación.
-
Verifica las variables de entorno: Asegúrate de que la clave de API (
RESEND_API_KEY
) y el correo del remitente (RESEND_EMAIL_FROM
) estén configurados correctamente en las variables de entorno en el panel de la plataforma de aplicaciones de DigitalOcean. -
Inspecciona los registros de ejecución de DigitalOcean: Abre la pestaña de Registros de ejecución en el panel de la plataforma de aplicaciones de DigitalOcean para buscar errores al procesar el correo electrónico o subir archivos adjuntos. Estos registros pueden proporcionar información útil, especialmente para las interacciones con Postmark o Resend.
-
Revisar la actividad de Postmark: En la pestaña de Actividad de Postmark, confirma que el correo electrónico de prueba se haya enviado correctamente a tu aplicación Flask. Si hay problemas, Postmark mostrará errores relacionados con el reenvío o problemas de configuración.
🎁 Conclusión
¡Felicidades! Has completado con éxito la serie 12 Días de DigitalOcean y has construido un Servicio de Procesamiento de Recibos Basado en Correo Electrónico completamente funcional.
Hoy:
- Integraste la API de Resend para enviar correos electrónicos transaccionales.
- Configuraste variables de entorno para gestionar de forma segura credenciales sensibles.
- Enviaste correos electrónicos de confirmación con detalles del recibo, enlaces de archivos adjuntos y una URL de hoja de cálculo.
- Probaste el flujo completo desde el envío del correo electrónico hasta la confirmación final.
Al agregar correos de confirmación, has concluido un proyecto que procesa correos electrónicos, extrae detalles, almacena adjuntos y mantiene todo organizado en Google Sheets. Es amigable para el usuario, práctico y está listo para resolver problemas del mundo real.
📚 Los 12 Días de DigitalOcean
Este marca el final de la serie 12 Días de DigitalOcean. En los últimos 12 días, hemos construido dos aplicaciones del mundo real, paso a paso. En el camino, has utilizado herramientas como las Funciones sin servidor, Plataforma de aplicaciones, Almacenamiento de objetos Spaces, PostgreSQL, GenAI de DigitalOcean, Twilio, API de Google Sheets, Postmark, PaperTrail y Resend. Cada pieza se unió para formar algo más grande que la suma de sus partes.
Aquí tienes un breve resumen de lo que has construido:
🎂 Días 1-6: Construir un Servicio de Recordatorio de Cumpleaños
Esta aplicación rastrea cumpleaños y envía recordatorios por SMS automáticamente. Es ligera, sin servidor y fácil de mantener.
- Día 1: Configurar una base de datos PostgreSQL
Cree una base de datos para almacenar detalles de contacto. - Día 2: Conéctese a PostgreSQL con Python
Conéctese de forma segura a su base de datos y obtenga datos. - Día 3: Verificar Cumpleaños y Enviar Notificaciones por SMS
Utilice Twilio para notificar a los usuarios sobre los próximos cumpleaños. - Día 4: Implementar en DigitalOcean Functions
Implemente su aplicación en la nube con DigitalOcean Functions. - Día 5: Automatizar Recordatorios Diarios con Triggers
Programar recordatorios para que se ejecuten automáticamente todos los días. - Día 6: Configurar el registro externo
Supervise y solucione problemas de su aplicación con Papertrail.
Para el Día 6, tendrá un servicio totalmente automatizado funcionando en la nube. Simplemente funciona.
📧 Días 7–12: Construir un Procesador de Recibos por Correo Electrónico
Esta aplicación maneja recibos enviados por correo electrónico, extrae los detalles necesarios y organiza todo en una base de datos.
- Día 7: Construir e Implementar una Aplicación Flask
Configure una aplicación ligera para procesar correos electrónicos con recibos. - Día 8: Integrar Postmark para el Procesamiento de Correos Electrónicos
Reenvíe correos electrónicos a su aplicación para su procesamiento. - Día 9: Extraer y Limpiar Datos con GenAI de DigitalOcean
Utilice GenAI para extraer datos estructurados del contenido de correo electrónico. - Día 10: Configurar DigitalOcean Spaces para almacenamiento seguro
Almacene archivos adjuntos de correo electrónico de forma segura con almacenamiento de objetos. - Día 11: Guardar datos de recibos en Google Sheets
Organice datos estructurados en una hoja de cálculo para un fácil acceso. - Día 12: Enviar correos electrónicos de confirmación
Notifique a los usuarios sobre recibos procesados exitosamente.
Para el Día 12, has construido una herramienta completa que maneja recibos de principio a fin.
Lo que has aprendido
- Almacenamiento y gestión de datos: Utilizaste PostgreSQL para el almacenamiento de datos estructurados y Google Sheets para el registro de datos fácil y compartible.
- Automatización de flujos de trabajo: Con las Funciones de DigitalOcean y disparadores de programación, automatizaste procesos y lograste que tus aplicaciones funcionen como un reloj.
- Agregando inteligencia a tus aplicaciones: Al integrar GenAI de DigitalOcean, incorporaste extracción y organización inteligente de datos en tus flujos de trabajo, haciendo que tus aplicaciones sean más inteligentes y capaces.
- Manejo seguro de archivos: Trabajaste con Spaces de DigitalOcean para almacenar y gestionar archivos de manera confiable y escalable.
- Mejorando aplicaciones con APIs: APIs como Twilio, Postmark y Resend aportaron funcionalidades como notificaciones por SMS, reenvío de correos electrónicos y correos de confirmación a tus aplicaciones.
- Depuración y Monitoreo: Utilizando herramientas como Papertrail, aprendiste a depurar y monitorear tus aplicaciones de manera efectiva, manteniéndolas funcionando sin problemas.
¿Qué sigue?
Esto es solo el comienzo, lo que has aprendido aquí se puede aplicar a innumerables otros proyectos. Aquí tienes algunas formas de seguir adelante:
- Únete a la conversación en Discord de DigitalOcean para conectarte con otros desarrolladores, compartir lo que has construido y sentirte inspirado.
- Explora más en nuestra biblioteca de tutoriales para obtener más ideas y proyectos.
Si sigues adelante, me encantaría ver lo que creas, ¡siéntete libre de compartir tu progreso o retroalimentación conmigo en Twitter.
Mantente simple. Construye algo útil. ¡Feliz creación! 🚀
Source:
https://www.digitalocean.com/community/tutorials/sending-confirmation-emails-with-resend