ウェブサイト検索

12 日間 (8 日目) - 消印を Flask アプリに接続する


12 日間の DigitalOcean 8 日目 へようこそ!昨日、Flask アプリを DigitalOcean にデプロイしてメールベースの受信プロセッサの構築を開始しました。このアプリを使用すると、領収書を電子メール アドレスに送信し、アプリによって自動的に処理されるようになります。

今日は、受信メールを処理するために消印を設定します。 Postmark はメールを受信し、扱いやすい JSON データに変換してアプリに送信します。これは、電子メール サーバーの管理や生の電子メール形式のデコードについて心配する必要がないことを意味します。Postmark がすべてを処理します。

このチュートリアルが終わるまでに、専用アドレスに送信されたメールが Flask アプリに自動的に転送され、記録、保存、または分析できるように設定されているはずです。始めましょう!

✨ 仕組み

すべてがどのように組み合わされるかは次のとおりです。

  1. ユーザーは、消印が指定されたアドレスに電子メール (領収書など) を送信します。
  2. Postmark は電子メールを受信し、その内容を JSON に処理します。
  3. Postmark は、Webhook URL を使用して、DigitalOcean でホストされている Flask アプリに構造化データを送信します。
  4. アプリはデータを処理し、送信者、件名、本文などの必要な情報を抽出します。

この設定では、Postmark がメール解析の重労働を処理するため、アプリはデータベースへの保存、クリーンアップ、分析の準備など、データの使用に集中できます。

🧑🍳 8日目のレシピ: 消印をFlaskアプリに接続する

まず、受信メールを処理できるように Flask アプリを更新します。次に、電子メール データをアプリに送信するように Postmark を構成し、セットアップをテストしてすべてが機能していることを確認します。

ステップ 1 - Flask アプリを更新する

アプリには、Postmark が電子メール データを送信できるルートが必要です。それを設定しましょう。

  1. app.py ファイルを開き、次のコードを追加します。

    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
    

    このコードは、次の 3 つのことを行う新しい /inbound ルートを設定します。

    • Postmark からの POST リクエストをリッスンします。
    • 件名、送信者の電子メール、本文などの重要な詳細を JSON ペイロードから抽出します。
    • 現時点では、これらの詳細をアプリのコンソールに記録します。次のステップとして、これを拡張してデータを分析し、データベースに保存します。
  2. 変更を app.py に保存します。

  3. 変更を GitHub にコミットしてプッシュし、DigitalOcean にアプリを再デプロイします。

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

  4. これで、アプリは Postmark から電子メール データを受信できるようになりました。 DigitalOcean アプリ プラットフォーム ダッシュボードに移動し、アプリのステータスを確認します。 ライブとしてマークされたら、アプリのパブリック URL を取得します。消印によりこの URL にメール データが送信されます。

簡単なヒント: 代わりにローカルでテストしたい場合は、Ngrok を使用して Flask アプリを一時的にインターネットに公開できます。走る:

ngrok http 5000

Ngrok は、https://abcd1234.ngrok.io のような URL を提供します。 Postmark を設定するときに、これを Webhook URL として使用できます。

ステップ 2 - 消印を設定する

Postmark は、電子メールを解析し、構造化データをアプリに転送するジョブを処理します。

  1. サインアップまたはログインして消印を押してください:

    • すでにアカウントをお持ちの場合は、Postmark にログインするか、無料でサインアップしてください (無料プランはテストや実験に最適です)。
  2. サーバーを作成します:

    • ログインしたら、[サーバー] タブに移動し、[サーバーの作成] をクリックします。

    • サーバーに Receipt Processor のような名前を付けます。

  3. デフォルトの受信ストリームを使用します:

    • すべての新しいサーバーには、いくつかの組み込みメッセージ ストリームが含まれています。そのうちの 1 つはデフォルトの受信ストリームで、これをこのセットアップで使用します。
    • [デフォルトの受信ストリーム] をクリックして詳細を表示します。

    簡単なメモ: Postmark は、さまざまなタイプの電子メール トラフィックを処理するように設計されたストリーム を使用して電子メールを整理します。 デフォルトの受信ストリームは、受信メールが処理される場所です。

    • 消印により、123456abcdefgh@inbound.postmarkapp.com のような電子メール アドレスが提供されます。

    簡単なメモ: このメール アドレスを保存してください。後でテストメールを送信し、設定を確認するためにこれを使用します。

ステップ 3 - 消印をアプリに接続する

次に、Webhook URL を設定して、Postmark が電子メール データの送信先を認識できるようにします。

  1. 消印に Webhook URL を設定します:

    • [デフォルトの受信ストリーム] 設定画面で、[サーバーの受信 Webhook URL を設定する] というフィールドを見つけます。

    • DigitalOcean アプリの URL を貼り付け、最後に /inbound を追加します。消印はこの URL を使用して電子メール データを送信します。例えば:

      hammerhead-xyz.ondigitalocean.app/inbound
      

    • Ngrok を使用してローカルでテストしている場合は、Ngrok パブリック URL をここに貼り付け、最後に /inbound を追加します。

    クイック ヒント: 後で Webhook URL を更新する場合 (たとえば、Ngrok からライブ アプリ URL に切り替える場合)、Postmark のデフォルトの受信ストリームのこのフィールドに戻ることができます。設定を変更し、URL を更新します。

ステップ 4: セットアップをテストする

すべてが期待どおりに機能していることを確認しましょう。

  1. テストメールを送信する:

    • Postmark が提供する電子メール アドレス (例: 123456abcdefgh@inbound.postmarkapp.com) を使用します。

    • テスト用に件名と本文を含む電子メールを送信します。

      • 例えば:

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

      Postmark が提供したメール アドレスにメールが送信されると、Postmark はメール データを Flask アプリに転送します。

  2. 消印アクティビティを確認する:

    • Postmark ダッシュボードの [アクティビティ] タブに移動して、メールが正しく受信され、転送されたことを確認します。

  3. ランタイム ログを確認します:

    • DigitalOcean アプリ プラットフォーム ダッシュボードに移動し、アプリを選択し、ログタブをクリックして実行時ログにアクセスします。

    • 次のようなものが表示されるはずです。

      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  
      

      デジタルオーシャン_ランタイム_ログ_スクリーンショット

トラブルシューティング

何かが機能しない場合は、次のことを確認してください。

  1. /inbound ルートが Flask アプリで設定され、実行されていることを確認してください (DigitalOcean 上または Ngrok を使用してローカルで)
  2. Postmark の Webhook URL に /inbound が含まれており、アプリのパブリック URL と一致していることを確認します。
  3. 送信先の電子メール アドレスを再確認してください。Postmark のデフォルトの受信ストリームからのアドレスと一致する必要があります。
  4. 消印のアクティビティ ログをチェックして、メールが受信されていることを確認します。
  5. DigitalOcean のランタイム ログを見て、Flask アプリが受信データを記録しているかどうかを確認します。
  6. /inbound ルート内の Flask の print ステートメントがアクティブであり、コメントアウトまたは削除されていないことを確認してください。これらのログは、テスト中のデバッグに不可欠です。

ヒント: Ngrok を使用してローカルでテストしている場合は、Ngrok URL がアクティブであり、正しいポートを指していることを確認してください。

🎁 まとめ

今日あなたが達成したことは次のとおりです。

  1. Flask アプリに受信ルートを追加して、消印からのメールを処理しました。
  2. Postmark のデフォルトの受信ストリームを構成し、提供された電子メール アドレスを取得し、DigitalOcean URL を使用してアプリに接続しました。
  3. テストメールを送信し、DigitalOcean のランタイム ログと消印のアクティビティ ログの両方をチェックして、すべてが期待どおりに動作していることを確認しました。

これは、このシリーズの前のチュートリアル 7 日目です: 電子メールベースの受信プロセッサの構築と展開。

これで、メールベースの受信プロセッサがメールを自動的に受信して処理できるようになりました。次のチュートリアルでは、このデータを取得し、AI ツールを統合して領収書の詳細を抽出して整理することで、データをさらに便利にします。それでは9 日目でお会いしましょう! 🚀