12 jours (jour 12) - Envoi d'e-mails de confirmation avec renvoi
Bienvenue au dernier jour de notre série 12 Days of DigitalOcean ! Nous avons parcouru un long chemin en créant un service de traitement des reçus par courrier électronique qui extrait les détails des reçus de Postmark à l'aide de l'agent GenAI de DigitalOcean, stocke en toute sécurité les pièces jointes dans DigitalOcean Spaces et enregistre les données extraites dans Google Sheets.
Aujourd'hui, nous allons ajouter la touche finale : renvoyer des e-mails de confirmation à l'expéditeur avec les détails du reçu, les liens des pièces jointes et un lien vers la feuille de calcul Google. Cette dernière étape relie tout ensemble, garantissant que les utilisateurs reçoivent une information immédiate indiquant que leurs reçus ont été traités avec succès.
🚀 Ce que vous apprendrez
À la fin de ce didacticiel, vous saurez comment :
- Utilisez l'API Resend pour envoyer des e-mails de confirmation par programmation.
- Gérez en toute sécurité les informations d’identification sensibles à l’aide de variables d’environnement.
- Formatez et envoyez des e-mails transactionnels avec les détails du reçu, les liens de pièce jointe et les URL des feuilles de calcul.
- Testez et dépannez un workflow complet de traitement des e-mails.
🛠 Ce dont vous aurez besoin
Si vous souhaitez continuer, nous supposons que vous avez suivi le jour 11 : Enregistrer les données du reçu et les pièces jointes dans Google Sheets et que vous disposez déjà :
- Une application Flask déployée pour traiter les e-mails de réception.
- Mise en place de l'intégration de Google Sheets et DigitalOcean Spaces.
Si vous souhaitez simplement apprendre à intégrer Resend pour l'envoi d'e-mails de confirmation, vous aurez besoin de :
- Un compte Renvoyer : inscrivez-vous sur Renvoyer.
- Une clé API : Générez-la depuis votre tableau de bord Renvoyer.
Étape 1 : Créez un compte de renvoi et obtenez la clé API
Pour envoyer des e-mails par programmation, nous utiliserons Resend, une API conviviale pour les développeurs pour l'envoi d'e-mails transactionnels. Il simplifie l'envoi d'e-mails afin que vous n'ayez pas à vous soucier de la configuration d'un serveur de messagerie, de la gestion des configurations SMTP ou des filtres anti-spam.
Tout d’abord, allez sur Renvoyer et créez un compte gratuit. Une fois connecté, accédez à la section Clés API du tableau de bord et générez une nouvelle clé API.
Donnez à votre clé API un nom descriptif, comme
Receipt Processor App
, et définissez son autorisation surAccès complet
.Copiez la clé API : votre clé API ne sera affichée qu'une seule fois : copiez-la et conservez-la en lieu sûr. Vous en aurez besoin à l'étape suivante pour authentifier votre application avec Resend.
Étape 2 : Mettez à jour vos variables d'environnement
Maintenant que nous avons la clé API Resend, enregistrons-la en tant que variable d'environnement dans DigitalOcean, comme nous l'avons fait tout au long de cette série.
Pour l'intégration Resend, nous devons enregistrer deux variables d'environnement :
RESEND_API_KEY
: clé API que vous avez générée à l'étape 1, qui authentifie votre application avec Resend.RESEND_EMAIL_FROM
: l'adresse e-mail de l'expéditeur que vous utiliserez pour envoyer des e-mails de confirmation. Il doit s'agir d'une adresse vérifiée dans votre compte Resend.
Pour ajouter ces variables, procédez comme suit :
Rendez-vous sur votre tableau de bord DigitalOcean App Platform, recherchez votre application Flask et accédez à l'onglet Paramètres. Sous Variables d'environnement, ajoutez les deux variables :
Clé :
RESEND_API_KEY
- Valeur : collez la clé API que vous avez générée à l'étape 1.
- Clé :
RESEND_API_KEY
- Valeur : collez la clé API que vous avez générée à l'étape 1.
Clé :
RESEND_EMAIL_FROM
- Valeur : saisissez une adresse e-mail d'expéditeur vérifiée à partir de votre compte Renvoyer.
Enregistrez vos modifications pour rendre la clé API Renvoyer disponible pour votre application Flask, que nous mettrons à jour ensuite.
Étape 3 : Installez la bibliothèque Python de renvoi
Ensuite, nous installerons la bibliothèque Resend Python pour gérer l'API à notre place. Il garde votre code propre et évite de traiter les requêtes HTTP brutes. Exécutez ceci dans votre terminal :
pip install resend
Étape 4 : Mettre à jour requirements.txt
Au lieu de modifier manuellement requirements.txt
, utilisez pip freeze
pour répertorier toutes les dépendances installées avec les versions exactes. Exécutez ceci :
pip freeze > requirements.txt
Cela met à jour requirements.txt
avec tout ce dont votre application a besoin, y compris resend
.
Étape 5 : Écrivez la fonction pour envoyer des e-mails
Il est maintenant temps d'ajouter la logique d'envoi des e-mails de confirmation. Pensez-y comme si vous envoyiez un e-mail à un ami pour lui faire savoir que son colis est arrivé – seulement ici, c'est pour les reçus.
Nous allons écrire une fonction send_confirmation_email
qui prend l'e-mail du destinataire, les détails du reçu, les liens des pièces jointes et l'URL de la feuille de calcul Google. En utilisant Resend, il formatera ceci dans un e-mail et l'enverra. Voici la fonction :
def send_confirmation_email(to_email, receipt_data, attachment_urls, spreadsheet_url):
"""
Send a confirmation email with receipt details and attachment URLs.
"""
email_from = os.getenv('RESEND_EMAIL_FROM') # Set this in your environment variables
subject = "Receipt Processed Successfully"
email_body = f"""
<h1>Receipt Confirmation</h1>
<p>Your receipt has been successfully processed. Here are the details:</p>
<ul>
<li><strong>Vendor:</strong> {receipt_data.get('vendor', 'N/A')}</li>
<li><strong>Amount:</strong> {receipt_data.get('amount', 'N/A')}</li>
<li><strong>Currency:</strong> {receipt_data.get('currency', 'N/A')}</li>
<li><strong>Date:</strong> {receipt_data.get('date', 'N/A')}</li>
</ul>
<p><strong>Attachments:</strong></p>
<ul>
{''.join(f'<li><a href="{url["url"]}">{url["file_name"]}</a></li>' for url in attachment_urls)}
</ul>
<p>You can view the processed data in the spreadsheet: <a href="{spreadsheet_url}">Google Spreadsheet</a></p>
"""
try:
resend.Emails.send({
"from": email_from,
"to": to_email,
"subject": subject,
"html": email_body
})
logging.info(f"Confirmation email sent to {to_email}.")
except Exception as e:
logging.error(f"Failed to send confirmation email: {e}")
Étape 5 : Déployer sur DigitalOcean
Pour déployer l'application Flask mise à jour, suivez les étapes du jour 7 : Création et déploiement du processeur de reçus par e-mail. Voici un bref résumé :
Poussez votre code mis à jour vers GitHub : après avoir apporté les modifications nécessaires à votre application Flask, validez et transférez le code mis à jour vers GitHub. Cela déclenchera un déploiement automatique dans la plateforme d’applications de DigitalOcean.
git add . git commit -m "Add Resend integration for confirmation emails" git push origin main
Surveiller le déploiement : vous pouvez suivre la progression dans la section Déploiements du tableau de bord de votre application.
Vérifiez votre déploiement : une fois le déploiement terminé, accédez à l'URL publique de votre application et testez ses fonctionnalités. Vous pouvez également consulter les journaux d'exécution dans le tableau de bord pour confirmer que l'application a démarré avec succès.
Vérifier les journaux d'exécution : si quelque chose ne fonctionne pas comme prévu, utilisez l'onglet Journaux d'exécution dans le tableau de bord App Platform pour déboguer les problèmes d'exécution. Recherchez les erreurs liées à l'API Resend ou à d'autres composants de l'application.
Étape 5 : tester l'intégralité du flux de travail
Maintenant que votre application est entièrement configurée et prête, il est temps de tester l’ensemble du flux de travail. Nous veillerons à ce que le corps de l'e-mail soit traité, que les pièces jointes soient décodées et téléchargées sur DigitalOcean Spaces, et que les détails du reçu et les URL des pièces jointes soient enregistrés dans Google Sheets . , et un e-mail de confirmation est envoyé à l'expéditeur.
Voici comment tester étape par étape :
Envoyer un e-mail test : envoyez un e-mail à Postmark avec un corps de texte et une pièce jointe. Si vous ne savez pas comment configurer Postmark, consultez Jour 8 : Connexion de Postmark à votre application Flask, où nous avons expliqué la configuration de Postmark pour transférer des e-mails vers votre application.
Vérifier l'activité Postmark JSON : dans le tableau de bord Postmark, accédez à l'onglet Activité. Localisez l'e-mail que vous avez envoyé et assurez-vous que la charge utile JSON inclut le corps du texte et les données de pièce jointe codées en Base64. Cela confirme que Postmark transmet correctement les données de courrier électronique à votre application, comme nous l'avons configuré au jour 8.
Surveillez les journaux : vérifiez les journaux d'exécution dans votre tableau de bord DigitalOcean App Platform pour vous assurer que l'application traite la charge utile JSON. Vous devriez voir des journaux montrant que les détails du reçu ont été extraits et que les pièces jointes ont été téléchargées sur DigitalOcean Spaces. Vous pouvez accéder aux journaux d'exécution dans l'onglet Journaux du tableau de bord DigitalOcean App Platform. Si vous n'êtes pas familier avec les journaux DigitalOcean, nous l'avons exploré lors du jour 9 : Automatisation de l'analyse des reçus avec l'agent GenAI de DigitalOcean.
Vérifier le téléchargement des espaces : visitez votre espace DigitalOcean pour confirmer que les fichiers ont été téléchargés avec succès. Vous devriez voir les pièces jointes dans votre compartiment telles que configurées au Jour 10 : Stockage des pièces jointes dans les espaces DigitalOcean. Si tout s'est déroulé comme prévu, les URL de vos pièces jointes seront accessibles.
Vérifiez Google Sheets : ouvrez votre feuille Google et confirmez qu'une nouvelle ligne contenant les détails du reçu et les URL des pièces jointes a été ajoutée, comme nous l'avons configuré au jour 11 : enregistrement des détails du reçu dans Google Sheets. La ligne doit inclure :
- Fournisseur, montant, devise et date extraits du corps de l'e-mail.
- URL séparées par des virgules pour les pièces jointes téléchargées dans la dernière colonne.
Vérifiez l'e-mail de confirmation : enfin, vérifiez la boîte de réception de l'adresse e-mail de l'expéditeur pour vous assurer que l'e-mail de confirmation a été reçu. Cet e-mail doit contenir :
- Les détails du reçu extraits (fournisseur, montant, devise et date).
- Liens vers les pièces jointes téléchargées dans DigitalOcean Spaces.
- Un lien vers la feuille de calcul Google où les données du reçu sont enregistrées.
Dépannage
Si le flux de travail ne fonctionne pas comme prévu, voici quelques étapes de dépannage à suivre :
Vérifiez les erreurs dans le tableau de bord de renvoi des e-mails : visitez le tableau de bord de renvoi pour voir si des erreurs se sont produites lors de l'envoi de l'e-mail de confirmation.
Vérifier les variables d'environnement : assurez-vous que la clé API (
RESEND_API_KEY
) et l'e-mail de l'expéditeur (RESEND_EMAIL_FROM
) sont correctement configurés dans vos variables d'environnement sur l'application DigitalOcean. Tableau de bord de la plateforme.Inspecter les journaux d'exécution de DigitalOcean : ouvrez l'onglet Journaux d'exécution dans le tableau de bord de votre plateforme d'applications DigitalOcean pour vérifier les erreurs lors du traitement de l'e-mail ou du téléchargement des pièces jointes. Ces journaux peuvent fournir des informations utiles, en particulier pour les interactions avec Postmark ou Resend.
Examiner l'activité de Postmark : dans l'onglet Activité de Postmark, confirmez que l'e-mail de test a été correctement transféré vers votre application Flask. En cas de problèmes, Postmark affichera des erreurs liées à des problèmes de transfert ou de configuration.
🎁Récapitulatif
Félicitations! Vous avez terminé avec succès la série 12 jours de DigitalOcean et créé un service de traitement des reçus par e-mail entièrement fonctionnel.
Aujourd'hui, vous :
- Intégration de l'API Resend pour l'envoi d'e-mails transactionnels.
- Variables d'environnement configurées pour gérer en toute sécurité les informations d'identification sensibles.
- Envoyé des e-mails de confirmation avec les détails du reçu, des liens de pièce jointe et une URL de feuille de calcul.
- Testé le flux de travail complet depuis la soumission par e-mail jusqu'à la confirmation finale.
En ajoutant des e-mails de confirmation, vous avez terminé un projet qui traite les e-mails, extrait les détails, stocke les pièces jointes et garde tout organisé dans Google Sheets. Il est convivial, pratique et prêt à résoudre des problèmes du monde réel.
📚 Les 12 Jours de DigitalOcean
Cela marque la fin de la série des 12 Days of DigitalOcean. Au cours des 12 derniers jours, nous avons créé deux applications concrètes, une étape à la fois. En cours de route, vous avez utilisé des outils tels que les Fonctions sans serveur de DigitalOcean, App Platform, Spaces Object Storage, PostgreSQL. , DigitalOcean GenAI, Twilio, API Google Sheets, Postmark, PaperTrail, et Renvoyer. Chaque pièce s’est assemblée pour former quelque chose de plus grand que la somme de ses parties.
Voici un bref récapitulatif de ce que vous avez construit :
🎂 Jours 1 à 6 : Créez un service de rappel d'anniversaire
Cette application suit les anniversaires et envoie automatiquement des rappels SMS. Il est léger, sans serveur et facile à entretenir.
- Jour 1 : Configurer une base de données PostgreSQL
Créez une base de données pour stocker les coordonnées. - Jour 2 : Connectez-vous à PostgreSQL avec Python
Connectez-vous en toute sécurité à votre base de données et récupérez des données. - Jour 3 : Vérifiez les anniversaires et envoyez des notifications par SMS
Utilisez Twilio pour informer les utilisateurs des anniversaires à venir. - Jour 4 : Déployer sur les fonctions DigitalOcean
Déployez votre application sur le cloud avec DigitalOcean Functions. - Jour 5 : Automatisez les rappels quotidiens avec des déclencheurs
Planifiez des rappels pour qu'ils s'exécutent automatiquement tous les jours. - Jour 6 : Configurer la journalisation externe
Surveillez et dépannez votre application avec Papertrail.
Dès le sixième jour, vous disposez d’un service entièrement automatisé exécuté dans le cloud. Cela fonctionne.
📧 Jours 7 à 12 : Créer un processeur de réception d'e-mails
Cette application gère les reçus envoyés par courrier électronique, extrait les détails nécessaires et organise le tout dans une base de données.
- Jour 7 : Créer et déployer une application Flask
Configurez une application légère pour traiter les e-mails de réception. - Jour 8 : Intégrer le cachet de la poste pour le traitement des e-mails
Transférez les e-mails vers votre application pour traitement. - Jour 9 : Extraire et nettoyer les données avec GenAI de DigitalOcean
Utilisez GenAI pour extraire des données structurées du contenu des e-mails. - Jour 10 : Configurer les espaces DigitalOcean pour un stockage sécurisé
Stockez les pièces jointes des e-mails en toute sécurité grâce au stockage objet. - Jour 11 : Enregistrer les données du reçu dans Google Sheets
Organisez les données structurées dans une feuille de calcul pour un accès facile. - Jour 12 : Envoyer des e-mails de confirmation
Informez les utilisateurs des reçus traités avec succès.
Au jour 12, vous avez créé un outil complet qui gère les reçus de bout en bout.
Ce que vous avez appris
- Stockage et gestion des données : vous avez utilisé PostgreSQL pour le stockage structuré des données et Google Sheets pour une journalisation facile et partageable des données.
- Automatisation des flux de travail : avec les fonctions DigitalOcean et les déclencheurs de planification, vous avez automatisé les processus et fait fonctionner vos applications comme sur des roulettes.
- Ajouter de l'intelligence à vos applications : en intégrant GenAI de DigitalOcean, vous avez introduit une extraction et une organisation intelligentes des données dans vos flux de travail, rendant vos applications plus intelligentes et plus performantes.
- Gérer les fichiers en toute sécurité : vous avez travaillé avec DigitalOcean Spaces pour stocker et gérer des fichiers de manière fiable et évolutive.
- Amélioration des applications avec des API : des API telles que Twilio, Postmark et Resend ont apporté des fonctionnalités telles que les notifications par SMS, le transfert d'e-mails et les e-mails de confirmation à vos applications.
- Débogage et surveillance : à l'aide d'outils tels que Papertrail, vous avez appris à déboguer et à surveiller efficacement vos applications, afin de garantir leur bon fonctionnement.
Quelle est la prochaine étape
Ce n’est que le début : ce que vous avez appris ici peut être appliqué à d’innombrables autres projets. Voici quelques façons de continuer :
- Rejoignez la conversation sur Discord de DigitalOcean pour vous connecter avec d'autres développeurs, partager ce que vous avez construit et vous inspirer.
- Explorez davantage notre bibliothèque de didacticiels pour plus d’idées et de projets.
Si vous suivez, j'aimerais voir ce que vous créez. N'hésitez pas à partager vos progrès ou vos commentaires avec moi sur Twitter.
Restez simple. Construisez quelque chose d’utile. Bonne construction ! 🚀