Recherche de site Web

12 jours (jour 8) – Connexion du cachet de la poste à votre application Flask


Bienvenue au Jour 8 des 12 Jours de DigitalOcean ! Hier, vous avez déployé une application Flask sur DigitalOcean pour commencer à créer un processeur de reçus basé sur les e-mails. Cette application vous permettra d'envoyer des reçus à une adresse e-mail et de les faire traiter automatiquement par votre application.

Aujourd’hui, vous allez configurer Postmark pour gérer les e-mails entrants. Postmark reçoit des e-mails, les transforme en données JSON faciles à gérer et les envoie à votre application. Cela signifie que vous n'avez pas à vous soucier de la gestion des serveurs de messagerie ou du décodage des formats de courrier électronique bruts : Postmark s'occupe de tout cela pour vous.

À la fin de ce didacticiel, vous disposerez d'une configuration dans laquelle les e-mails envoyés à une adresse dédiée sont automatiquement transférés vers votre application Flask, prêts à être enregistrés, stockés ou analysés. Commençons !

✨ Comment ça marche

Voici comment tout s’emboîte :

  1. Un utilisateur envoie un e-mail (comme un reçu) à une adresse fournie par Postmark.
  2. Postmark reçoit l'e-mail, traite son contenu en JSON.
  3. Postmark envoie les données structurées à votre application Flask hébergée sur DigitalOcean à l'aide d'une URL de webhook.
  4. Votre application traite les données et extrait les informations dont elle a besoin, comme l'expéditeur, le sujet et le corps.

Avec cette configuration, Postmark gère le gros du travail d'analyse des e-mails afin que votre application puisse se concentrer sur l'utilisation des données, qu'il s'agisse de les stocker dans une base de données, de les nettoyer ou de les préparer pour l'analyse.

🧑🍳 Recette du jour 8 : connecter le cachet de la poste à votre application Flask

Vous commencerez par mettre à jour l'application Flask pour gérer les e-mails entrants. Ensuite, vous configurerez Postmark pour envoyer des données de courrier électronique à votre application et testerez la configuration pour vous assurer que tout fonctionne.

Étape 1 - Mettez à jour votre application Flask

Votre application a besoin d'un itinéraire par lequel Postmark peut envoyer les données de courrier électronique. Mettons cela en place.

  1. Ouvrez votre fichier app.py et ajoutez ce code :

    from flask import Flask, request, jsonify
    
    app = Flask(__name__)
    
    @app.route('/inbound', methods=['POST'])
    def inbound():
        # Parse the JSON data sent by Postmark
        email_data = request.get_json()
    
        # Extract useful information
        subject = email_data.get('Subject', 'No subject')
        from_email = email_data.get('FromFull', {}).get('Email', 'Unknown sender')
        body = email_data.get('TextBody', '')
    
        # Log the details (or process them)
        print(f"Received email from {from_email} with subject: {subject}")
        print(f"Body: {body}")
    
        return jsonify({"status": "success"}), 200
    

    Ce code configure une nouvelle route /inbound qui fait trois choses :

    • Écoute les requêtes POST de Postmark.
    • Extrait les détails clés tels que l'objet, l'e-mail de l'expéditeur et le corps de la charge utile JSON.
    • Enregistre ces détails sur la console de votre application pour le moment. Nous allons étendre cela pour analyser les données et les stocker dans une base de données lors de la prochaine étape.
  2. Enregistrez les modifications dans app.py.

  3. Validez et transmettez les modifications à GitHub pour redéployer l'application sur DigitalOcean :

    git add app.py
    git commit -m "Add inbound route for Postmark emails"
    git push origin main
    

  4. Votre application est désormais prête à recevoir des données de courrier électronique de Postmark. Rendez-vous sur votre tableau de bord DigitalOcean App Platform et vérifiez l'état de votre application. Une fois qu'elle est marquée comme live, récupérez l'URL publique de votre application. Postmark enverra les données de courrier électronique à cette URL.

Conseil rapide : si vous souhaitez plutôt tester localement, vous pouvez utiliser Ngrok pour exposer temporairement votre application Flask à Internet. Courir:

ngrok http 5000

Ngrok vous donnera une URL comme https://abcd1234.ngrok.io. Vous pouvez l'utiliser comme URL de votre webhook lors de la configuration de Postmark.

Étape 2 - Configurer le cachet de la poste

Postmark se chargera d'analyser les e-mails et de transmettre les données structurées à votre application.

  1. Inscrivez-vous ou connectez-vous à Postmark :

    • Si vous avez déjà un compte, connectez-vous à Postmark ou inscrivez-vous gratuitement (le plan gratuit est parfait pour tester et expérimenter).
  2. Créer un serveur :

    • Une fois connecté, accédez à l'onglet Serveurs et cliquez sur Créer un serveur.

    • Nommez le serveur comme Receipt Processor

  3. Utiliser le flux entrant par défaut :

    • Chaque nouveau serveur comprend quelques flux de messages intégrés. L'un d'eux est le flux entrant par défaut, que nous utiliserons pour cette configuration.
    • Cliquez sur Flux entrant par défaut pour afficher ses détails.

    Remarque rapide : Postmark organise les e-mails à l'aide de flux, conçus pour gérer différents types de trafic de messagerie. Le Flux entrant par défaut est l'endroit où les e-mails entrants sont traités.

    • Postmark vous fournira une adresse e-mail, telle que 123456abcdefgh@inbound.postmarkapp.com.

    Remarque rapide : Enregistrez cette adresse e-mail ! Vous l'utiliserez pour envoyer des e-mails de test plus tard et vérifier votre configuration.

Étape 3 - Connectez Postmark à votre application

Ensuite, vous configurerez l’URL du webhook afin que Postmark sache où envoyer les données de courrier électronique.

  1. Définissez l'URL de votre webhook dans le cachet de la poste :

    • Sur l'écran des paramètres du Flux entrant par défaut, recherchez le champ intitulé Définir l'URL du webhook entrant de votre serveur.

    • Collez l'URL de votre application DigitalOcean, en ajoutant /inbound à la fin. Postmark utilisera cette URL pour envoyer les données de courrier électronique. Par exemple:

      hammerhead-xyz.ondigitalocean.app/inbound
      

    • Si vous testez localement avec Ngrok, collez votre URL publique Ngrok ici et ajoutez /inbound à la fin.

    Conseil rapide : Si vous mettez à jour l'URL de votre webhook ultérieurement (par exemple, lorsque vous passez de Ngrok à l'URL d'une application en direct), vous pouvez revenir à ce champ dans le Flux entrant par défaut de Postmark. paramètres et mettez à jour l’URL.

Étape 4 : tester la configuration

Assurons-nous que tout fonctionne comme prévu.

  1. Envoyer un e-mail test :

    • Utilisez l'adresse e-mail fournie par Postmark (par exemple, 123456abcdefgh@inbound.postmarkapp.com).

    • Envoyez un e-mail avec un sujet et un corps à tester.

      • Par exemple:

        Subject: Receipt for Order #12345
        Body: Thank you for your purchase!
        Your order #12345 has been processed.  
        
        Total: $50.00  
        Date: December 29, 2024  
        

      Une fois l'e-mail envoyé à votre adresse e-mail fournie par Postmark, Postmark transmettra les données de l'e-mail à votre application Flask.

  2. Vérifier l'activité du cachet de la poste :

    • Accédez à l'onglet Activité dans votre tableau de bord Postmark pour confirmer que l'e-mail a été reçu et transféré correctement.

  3. Vérifiez vos journaux d'exécution :

    • Accédez à votre tableau de bord DigitalOcean App Platform, sélectionnez votre application et cliquez sur l'onglet Journaux pour accéder aux Journaux d'exécution.

    • Vous devriez voir quelque chose comme ceci :

      Received email from sender@example.com with subject: Receipt for Order #12345
      Body: 
      Thank you for your purchase!  
      Your order #12345 has been processed.  
      
      Total: $50.00  
      Date: December 29, 2024  
      

      digitalocean_runtime_logs_screenshot

Dépannage

Si quelque chose ne fonctionne pas, voici quelques points à vérifier :

  1. Assurez-vous que la route /inbound est configurée dans votre application Flask et qu'elle est en cours d'exécution (soit sur DigitalOcean, soit localement avec Ngrok).
  2. Vérifiez que l'URL du webhook dans Postmark inclut /inbound et correspond à l'URL publique de votre application.
  3. Vérifiez à nouveau l'adresse e-mail à laquelle vous envoyez : elle doit correspondre à celle du flux entrant par défaut de Postmark.
  4. Vérifiez les journaux d'activité de Postmark pour confirmer que les e-mails sont bien reçus.
  5. Consultez les Journaux d'exécution dans DigitalOcean pour voir si l'application Flask enregistre les données entrantes.
  6. Assurez-vous que les instructions d'impression de Flask dans la route /inbound sont actives et n'ont pas été commentées ou supprimées. Ces journaux sont essentiels au débogage pendant les tests.

Conseil : Si vous testez localement avec Ngrok, assurez-vous que votre URL Ngrok est active et pointe vers le bon port.

🎁 Conclusion

Voici ce que vous avez accompli aujourd’hui :

  1. Vous avez ajouté une route entrante dans votre application Flask pour gérer les e-mails de Postmark.
  2. Configurez le flux entrant par défaut de Postmark, récupérez l'adresse e-mail fournie et connectez-la à votre application à l'aide de votre URL DigitalOcean.
  3. J'ai envoyé un e-mail de test et vérifié les journaux d'exécution sur DigitalOcean et les journaux d'activité sur Postmark pour confirmer que tout fonctionne comme prévu.

Voici le didacticiel précédent de cette série du jour 7 : Création et déploiement du processeur de reçus par courrier électronique.

Votre processeur de réception par e-mail est maintenant prêt à recevoir et à traiter les e-mails automatiquement ! Dans le prochain didacticiel, vous utiliserez ces données et les rendrez encore plus utiles en intégrant des outils d'IA pour extraire et organiser les détails des reçus. Rendez-vous pour le Jour 9 ! 🚀