私たちの12 Days of DigitalOceanシリーズの最終日へようこそ!長い道のりを共に歩んできましたが、メールベースのレシート処理サービスを構築し、Postmarkから受領書の詳細を抽出し、DigitalOceanのGenAI Agentを使用して安全にDigitalOcean Spacesに添付ファイルを保存し、抽出したデータをGoogle Sheetsに保存します。
本日は、確認メールを送信元に送り返す最終的な仕上げを追加します。この最終ステップにより、ユーザーがレシートが正常に処理されたことをすぐにフィードバックを受け取ることができるようになります。
🚀 学べること
このチュートリアルの最後までに以下の方法を学ぶことができます:
- Resend APIを使用して確認メールをプログラムで送信する。
- 環境変数を使用して機密資格情報を安全に管理します。
- 取引メールをフォーマットして送信し、領収書の詳細、添付リンク、およびスプレッドシートのURLを含めます。
- 完全なメール処理ワークフローをテストし、トラブルシューティングします。
🛠 必要なもの
一緒に構築したい場合は、11日目:Google Sheetsに領収書データと添付ファイルを保存するをフォローし、すでに以下を持っていると仮定します:
- 領収書メールを処理するためのデプロイ済みのFlaskアプリ。
- Google SheetsとDigitalOcean Spacesの統合が設定されています。
Resendを統合して確認メールを送信する方法に興味があるだけの場合は、次のものが必要です:
- Resendアカウント:Resendでサインアップします。
- APIキー:Resendダッシュボードから生成します。
ステップ1:Resendアカウントを作成し、APIキーを取得します
電子メールをプログラムで送信するために、Resendを使用します。これは、トランザクションメールを送信するための開発者向けAPIで、電子メールサーバーの設定やSMTP構成の問題、スパムフィルターの心配をせずに電子メールの送信を簡素化します。
-
まず、Resendにアクセスして無料アカウントを作成します。ログインしたら、ダッシュボードのAPIキーセクションに移動し、新しいAPIキーを生成します。
-
APIキーには、
Receipt Processor App
などの説明的な名前を付け、完全アクセス
の権限を設定します。 -
APIキーをコピー: あなたのAPIキーは一度だけ表示されます—コピーして安全な場所に保管してください。次のステップで、Resendとアプリを認証するために必要になります。
ステップ2: 環境変数を更新する
ResendのAPIキーを取得したので、これをDigitalOceanの環境変数として保存しましょう。これまでこのシリーズを通して行ってきたように。
Resend統合のために、2つの環境変数を保存する必要があります:
RESEND_API_KEY
: ステップ1で生成したAPIキーで、Resendとアプリを認証します。RESEND_EMAIL_FROM
: 確認メールを送信するために使用する送信者のメールアドレス。このアドレスはあなたのResendアカウントで確認済みである必要があります。
これらの変数を追加するには、次の手順に従ってください:
-
DigitalOcean App Platformのダッシュボードに移動し、Flaskアプリを見つけて、設定タブに移動します。環境変数の下に、次の2つの変数を追加します:
-
キー:
RESEND_API_KEY
- 値: ステップ1で生成したAPIキーを貼り付けます。
-
キー:
RESEND_EMAIL_FROM
- 値: Resendアカウントから確認済みの送信者メールアドレスを入力します。
-
-
変更内容を保存して、Resend APIキーをFlaskアプリで利用できるようにします。次に更新します。
ステップ3:Resend Pythonライブラリのインストール
次に、APIを扱うためにResend Pythonライブラリをインストールします。これにより、コードがクリーンになり、生のHTTPリクエストを処理する必要がなくなります。ターミナルでこれを実行してください:
ステップ4:requirements.txt
の更新
requirements.txt
を手動で編集する代わりに、pip freeze
を使用して、すべてのインストール済み依存関係を正確なバージョンでリストアップします。これを実行してください:
これにより、アプリに必要なすべてのものが含まれるようにrequirements.txt
が更新されます。resend
も含まれています。
ステップ5:メールを送信する関数の作成
今、確認メールを送信するロジックを追加する時です。友達に荷物が届いたことを知らせるためにメールを送るように考えてください—ここでは、領収書のためのものです。
send_confirmation_email
関数を作成します。この関数は受信者のメールアドレス、レシートの詳細、添付ファイルのリンク、Google スプレッドシートの URL を取得します。Resend を使用して、これらをメールにフォーマットして送信します。以下に関数が示されています:
ステップ 5: DigitalOcean にデプロイする
更新された Flask アプリをデプロイするには、Day 7: Building and Deploying the Email-Based Receipt Processor の手順に従ってください。以下に簡単な要約を示します:
-
GitHub に更新されたコードをプッシュする: Flask アプリを必要な変更後、コミットして GitHub に更新されたコードをプッシュします。これにより、DigitalOcean の App Platform で自動的にデプロイがトリガーされます。
-
デプロイメントを監視: アプリのダッシュボードのデプロイメントセクションで進捗状況を追跡できます。
-
デプロイメントを確認: デプロイメントが完了したら、アプリの公開URLに移動して機能をテストしてください。ダッシュボードのランタイムログを確認して、アプリが正常に起動したことを確認できます。
-
ランタイムログを確認: 期待通りに動作しない場合は、App Platformダッシュボードのランタイムログタブを使用してランタイムの問題をデバッグしてください。Resend APIやその他のアプリコンポーネントに関連するエラーを探してください。
ステップ5: ワークフロー全体のテスト
アプリが完全に設定され、準備が整ったので、ワークフロー全体をテストする時が来ました。メール本文が処理されること、添付ファイルがデコードされてDigitalOcean Spacesにアップロードされること、受取詳細と添付ファイルのURLがGoogle Sheetsに保存されること、そして確認メールが送信者に送信されることを確認します。
以下に、ステップバイステップでのテスト方法を示します:
-
テストメールを送信: テキスト本文と添付ファイルを含むメールをPostmarkに送信します。Postmarkの設定方法がわからない場合は、8日目: PostmarkをFlaskアプリに接続するを確認してください。ここでは、Postmarkを設定してアプリにメールを転送する手順を説明しました。
-
PostmarkアクティビティJSONを確認する: Postmarkダッシュボードで、アクティビティタブに移動します。送信したメールを見つけ、JSONペイロードにテキスト本文とBase64エンコードされた添付データが含まれていることを確認します。これは、Postmarkが正しくメールデータをアプリに転送していることを確認するものです。これも8日目で設定した内容です。
-
ログの監視: アプリがJSONペイロードを処理していることを確認するために、DigitalOcean App Platformのダッシュボードで実行時ログをチェックしてください。レシートの詳細が抽出され、添付ファイルがDigitalOcean Spacesにアップロードされたことを示すログが表示されるはずです。実行時ログには、DigitalOcean App Platformのダッシュボードのログタブからアクセスできます。DigitalOceanのログに不慣れな場合は、9日目: DigitalOceanのGenAIエージェントによるレシート解析の自動化でこれを探求しました。
-
スペースアップロードの確認: あなたのDigitalOceanスペースにアクセスして、ファイルが正常にアップロードされたことを確認してください。第10日: DigitalOceanスペースに添付ファイルを保存するで設定した通り、バケット内に添付ファイルが表示されるはずです。すべてが順調に進んでいれば、添付ファイルのURLにアクセスできるようになります。
-
Googleシートの確認: あなたのGoogleシートを開いて、レシートの詳細と添付ファイルのURLを含む新しい行が追加されたことを確認してください。これは第11日: Googleシートにレシートの詳細を保存するで設定した通りです。その行には以下が含まれるべきです:
- ベンダー、金額、通貨、およびメール本文から抽出された日付。
- 最後の列にアップロードされた添付ファイルのカンマ区切りのURL。
-
確認メールを確認する:最後に、送信者のメールアドレスの受信トレイを確認して、確認メールが受信されたことを確認してください。このメールには以下が含まれている必要があります:
- 抽出された領収書の詳細(ベンダー、金額、通貨、日付)。
- DigitalOcean Spacesにアップロードされた添付ファイルへのリンク。
- 領収書データが記録されているGoogleスプレッドシートへのリンク。
トラブルシューティング
期待どおりにワークフローが機能しない場合は、以下のトラブルシューティング手順を実行してください:
-
エラーを確認するためにResendメールダッシュボードをチェック: 確認メールの送信中にエラーが発生していないかを確認するためにResendダッシュボードを訪れてください。
-
環境変数を確認する: デジタルオーシャンApp Platformダッシュボードの環境変数でAPIキー(
RESEND_API_KEY
)と送信元メールアドレス(RESEND_EMAIL_FROM
)が正しく設定されていることを確認してください。 -
デジタルオーシャンランタイムログを調査する: デジタルオーシャンApp Platformダッシュボードのランタイムログタブを開いて、メールの処理や添付ファイルのアップロード中にエラーが発生していないかを確認してください。特にPostmarkやResendとのやり取りに関する洞察が得られるかもしれません。
-
Postmarkのアクティビティを確認: Postmarkのアクティビティタブで、テストメールが適切にFlaskアプリケーションに転送されたことを確認してください。問題がある場合、Postmarkは転送や構成に関連するエラーを表示します。
🎁 まとめ
おめでとうございます!あなたは12 Days of DigitalOceanシリーズを成功裏に完了し、メールベースの領収書処理サービスを完全に構築しました。
今日、あなたは:
- Resend APIを統合してトランザクションメールを送信しました。
- 環境変数を構成して機密情報を安全に管理しました。
- 受領明細、添付ファイルリンク、スプレッドシートURLを含む確認メールを送信しました。
- メールの送信から最終確認までのフルワークフローをテストしました。
確認メールを追加することで、メールを処理し、詳細を抽出し、添付ファイルを保存し、すべてをGoogle スプレッドシートで整理するプロジェクトを完了しました。ユーザーフレンドリーで実用的で、現実世界の問題を解決する準備が整いました。
📚 デジタルオーシャンの12日間
これで、デジタルオーシャンの12日間シリーズが終了します。過去12日間で、一歩ずつ2つの実世界アプリケーションを構築してきました。その過程で、DigitalOceanのサーバーレス関数、App Platform、Spacesオブジェクトストレージ、PostgreSQL、DigitalOcean GenAI、Twilio、Google Sheets API、Postmark、PaperTrail、Resendなどのツールを使用しました。各要素がその合計以上のものを形成するために組み合わさりました。
ここで、構築した内容を簡単に振り返ります:
🎂 Days 1–6: 誕生日リマインダーサービスを構築
このアプリは誕生日を追跡し、自動的にSMSリマインダーを送信します。軽量でサーバーレスでメンテナンスが簡単です。
- Day 1: PostgreSQLデータベースのセットアップ
連絡先の詳細を保存するデータベースを作成します。 - Day 2: PythonでPostgreSQLに接続する
データベースに安全に接続してデータを取得します。 - Day 3: 誕生日を確認してSMS通知を送信する
Twilioを使用してユーザーに今後の誕生日について通知します。 - Day 4: DigitalOcean Functionsにデプロイする
DigitalOcean Functionsを使用してアプリをクラウドにデプロイします。 - Day 5: トリガーを使用して毎日のリマインダーを自動化する
リマインダーを毎日自動的に実行するようにスケジュールします。 - Day 6: 外部ログの設定
Papertrailを使用してアプリを監視およびトラブルシューティングします。
Day 6までには、クラウド上で完全に自動化されたサービスが稼働しています。それはうまく動作します。
📧 Days 7–12: メール受信処理プログラムの構築
このアプリはメールで受信したレシートを処理し、必要な詳細を抽出し、すべてをデータベースに整理します。
- Day 7: Flaskアプリの構築とデプロイ
レシートメールを処理する軽量アプリをセットアップします。 - Day 8: メール処理のためのPostmarkの統合
メールをアプリに転送して処理します。 - Day 9: DigitalOceanのGenAIを使用したデータの抽出とクリーニング
GenAIを使用してメールコンテンツから構造化データを抽出します。 - 10日目:安全なストレージのためにDigitalOcean Spacesを設定する
オブジェクトストレージを使用してメールの添付ファイルを安全に保存します。 - 11日目:領収書データをGoogle Sheetsに保存する
簡単にアクセスできるようにスプレッドシートで構造化データを整理します。 - 12日目:確認メールを送信する
処理が成功した領収書についてユーザーに通知します。
12日目までに、領収書を端から端まで処理する完全なツールを構築しました。
学んだこと
- データの保存と管理:構造化データの保存にPostgreSQL、簡単で共有可能なデータログにGoogle Sheetsを使用しました。
- ワークフローの自動化: DigitalOcean Functionsとスケジュールトリガーを使用することで、プロセスを自動化し、アプリを規則正しく動作させました。
- アプリにインテリジェンスを追加: DigitalOceanのGenAIを統合することで、データのインテリジェントな抽出と整理をワークフローに取り入れ、アプリをより賢く、より能力のあるものにしました。
- ファイルの安全な取り扱い: DigitalOcean Spacesを使用して、信頼性が高く、スケーラブルな方法でファイルを保存・管理しました。
- APIを使ったアプリの強化: Twilio、Postmark、およびResendのようなAPIにより、SMS通知、メール転送、確認メールなどの機能をアプリに追加しました。
- デバッグと監視: Papertrailのようなツールを使用して、あなたはアプリを効果的にデバッグおよび監視し、スムーズに動作させる方法を学びました。
次は何ですか
これは始まりに過ぎません—ここで学んだことは、無数の他のプロジェクトに適用できます。続けるためのいくつかの方法を紹介します:
- 他の開発者とつながり、あなたが作ったものを共有し、インスピレーションを得るために、DigitalOceanのDiscordで会話に参加しましょう。
- さらなるアイデアやプロジェクトのために、私たちのチュートリアルライブラリを探ってみてください。
もしあなたがフォローしているなら、あなたが作成したものを見たいです—Twitterで進捗やフィードバックを気軽に共有してください。
シンプルに保ちましょう。役に立つものを作りましょう。楽しい構築を! 🚀
Source:
https://www.digitalocean.com/community/tutorials/sending-confirmation-emails-with-resend