歡迎來到我們的 12 天的 DigitalOcean 系列的最後一天!我們已經走了很長的路,建立了一個 基於電子郵件的收據處理服務,從 Postmark 中提取收據詳情,使用 DigitalOcean 的 GenAI 代理,安全地 將附件儲存在 DigitalOcean Spaces 中,並 將提取的數據保存到 Google Sheets 中。
今天,我們將添加最後的觸控—將確認電子郵件發送回發件人,包含收據詳情、附件鏈接以及 Google Spreadsheet 的鏈接。這最後一步將所有內容聯繫在一起,確保用戶立即收到反饋,告知他們的收據已成功處理。
🚀 你將學到什麼
在本教程結束時,你將知道如何:
- 使用 Resend API 程式化地發送確認電子郵件。
- 安全地使用環境變數管理敏感憑證。
- 格式化並發送包含收據詳細信息、附件鏈接和電子表格URL的交易郵件。
- 測試和排除完整的電子郵件處理工作流程。
🛠 準備物品
如果您想要一起構建,我們假設您已經按照Day 11: 將收據數據和附件保存在Google表格中並且已擁有:
- 用於處理收據郵件的已部署的Flask應用程式。
- 已設置好的Google表格和數字海外空間集成。
如果您只是想學習如何集成Resend以發送確認郵件,您將需要:
- 一個Resend帳戶:在Resend註冊。
- 一個API密鑰:從您的Resend儀表板生成。
步驟 1:建立一個 Resend 帳號並取得 API 金鑰
為了以程式方式發送郵件,我們將使用 Resend,這是一個開發者友好的 API,用於發送交易郵件。它簡化了發送郵件的過程,您無需擔心設置郵件伺服器、管理 SMTP 配置或擔心垃圾郵件過濾器。
-
首先,前往 Resend 並註冊一個免費帳號。登錄後,進入儀表板的 API 金鑰部分並生成一個新的 API 金鑰。
-
為您的 API 金鑰取一個描述性名稱,例如
收據處理應用程式
,並將其權限設置為完全訪問
。 -
複製 API 金鑰:您的 API 金鑰只會顯示一次,複製並妥善保存。您將需要在下一步中使用它來驗證您的應用程式與 Resend。
第 2 步:更新您的環境變數
現在我們有了 Resend API 金鑰,讓我們將其保存為 DigitalOcean 中的環境變數,就像我們在本系列中一直在做的那樣。
對於 Resend 整合,我們需要保存兩個環境變數:
RESEND_API_KEY
:在第 1 步中生成的用於驗證您的應用程式與 Resend 的 API 金鑰。RESEND_EMAIL_FROM
:您將用於發送確認郵件的寄件人電子郵件地址。這應該是在您的 Resend 帳戶中驗證的地址。
要添加這些變數,請按照以下步驟進行操作:
- 請前往您的DigitalOcean應用平台儀表板,找到您的Flask應用程序,並導航到設置選項卡。在環境變數下,添加這兩個變數:
-
鍵:
RESEND_API_KEY
- 值:粘貼您在第1步中生成的API密鑰。
-
鍵:
RESEND_EMAIL_FROM
- 值:輸入您在Resend帳戶中驗證的寄件人電子郵件地址。
-
-
保存更改以使Resend API密鑰對您的Flask應用程序可用,接下來我們將更新應用程序。
步驟 3:安裝 Resend Python Library
接下來,我們將安裝 Resend Python Library 來處理 API。這可以讓您的程式碼更整潔,避免直接處理原始的 HTTP 要求。在您的終端機上執行以下指令:
步驟 4:更新 requirements.txt
不需要手動編輯 requirements.txt
,可以使用 pip freeze
列出所有已安裝的相依套件及其確切版本。執行以下指令:
這將更新 requirements.txt
,包括您的應用程式所需的所有內容,包括 resend
。
步驟 5:撰寫寄送郵件的函數
現在是時候加入寄送確認郵件的邏輯。可以將其想像成寄送郵件給朋友告知他們包裹已送達,這裡是為了發送收據。
我們將編寫一個send_confirmation_email
函數,該函數接受收件人的電子郵件、收據詳細信息、附件鏈接和Google試算表URL。使用Resend,它將格式化這些內容並發送郵件。這是函數:
步驟5:部署到DigitalOcean
要部署更新後的Flask應用程式,請按照第7天:構建和部署基於電子郵件的收據處理器中的步驟。以下是簡要摘要:
-
將更新後的代碼推送到GitHub:對Flask應用程式進行必要的更改後,提交並將更新後的代碼推送到GitHub。這將觸發DigitalOcean應用程式平台的自動部署。
-
監控部署:您可以在應用儀表板的部署部分跟踪進度。
-
驗證部署:部署完成後,轉到應用的公共 URL 並測試其功能。您也可以在儀表板中檢查運行時日誌以確認應用程序是否成功啟動。
-
檢查運行時日誌:如果某些內容未按預期工作,請使用應用平台儀表板中的運行時日誌選項卡來調試運行時問題。查找與重新發送 API 或其他應用程序組件相關的任何錯誤。
步驟 5:測試整個工作流程
現在您的應用已完全配置並準備就緒,是時候測試整個工作流程。我們將確保 電子郵件內容已處理、附件已解碼並 上傳到 DigitalOcean Spaces、收據詳情和附件 URL 已 儲存到 Google Sheets,並向發件人 發送確認電子郵件。
以下是逐步測試的方法:
-
發送測試電子郵件:向 Postmark 發送一封帶有文字內容和附件的電子郵件。如果您不確定如何配置 Postmark,請查看 第 8 天:將 Postmark 連接到您的 Flask 應用,我們在那裡介紹了如何設置 Postmark 以將電子郵件轉發到您的應用。
-
檢查Postmark活動JSON:在Postmark儀表板中,前往活動選項卡。找到您發送的郵件,確保JSON數據包含文本正文和Base64編碼的附件數據。這將確認Postmark正確地將郵件數據轉發到您的應用程式,就像我們在第8天設置的那樣。
-
監控日誌:檢查您在 DigitalOcean App Platform 儀表板上的運行日誌,以確保應用程序處理 JSON 負載。您應該會看到日誌顯示收據詳細信息已被提取,並且附件已上傳到 DigitalOcean Spaces。您可以在 DigitalOcean App Platform 儀表板的 日誌 標籤中訪問運行日誌。如果您對 DigitalOcean 日誌不太熟悉,我們在 第 9 天:使用 DigitalOcean 的 GenAI Agent 自動化收據解析 中探討過這個問題。
-
驗證空間上傳: 訪問您的DigitalOcean空間,確認文件已成功上傳。您應該在桶中看到附件,就像在Day 10: Storing Attachments in DigitalOcean Spaces中配置的那樣。如果一切順利,您的附件URL將是可訪問的。
-
檢查Google表格: 打開您的Google表格,確認已添加包含收據詳細信息和附件URL的新行,就像我們在Day 11: Saving Receipt Details in Google Sheets中設置的那樣。該行應包括:
- 從郵件正文中提取的供應商、金額、貨幣和日期。
- 在最後一列中用逗號分隔的上傳附件的URL。
-
驗證確認郵件:最後,檢查發送者郵件地址的收件箱,確保已收到確認郵件。這封郵件應包含:
- 提取的收據詳細信息(供應商、金額、貨幣和日期)。
- 上傳附件在 DigitalOcean Spaces 中的鏈接。
- Google 表格的鏈接,其中記錄了收據數據。
疑難排解
如果工作流程未如預期般運作,請按照以下幾個疑難排解步驟進行:
-
檢查重新寄送郵件儀表板上的錯誤:訪問重新寄送儀表板,查看是否在發送確認郵件時出現任何錯誤。
-
驗證環境變數:確保在 DigitalOcean App 平台儀表板中正確配置 API 金鑰(
RESEND_API_KEY
)和寄件者郵件(RESEND_EMAIL_FROM
)的環境變數。 -
檢查 DigitalOcean 運行時記錄:在 DigitalOcean App 平台儀表板中打開運行時記錄選項卡,檢查發送郵件或上傳附件時是否出現錯誤。這些記錄可以提供有用的洞察,特別是與 Postmark 或 Resend 的互動方面。
-
檢查 Postmark 活動:在 Postmark 的 活動 標籤中,確認測試電子郵件是否正確轉發到您的 Flask 應用。如果有任何問題,Postmark 將顯示與轉發或配置問題相關的錯誤。
🎁 總結
恭喜您!您已成功完成 DigitalOcean 的 12 天挑戰 系列,並建立了一個功能完善的 基於電子郵件的收據處理服務。
今天,您:
- 整合了 Resend API 以發送交易電子郵件。
- 配置了環境變量以安全管理敏感憑證。
- 發送了包含收據詳細信息、附件鏈接和電子表格網址的確認電子郵件。
- 測試了從電子郵件提交到最終確認的完整工作流程。
通過添加確認郵件,您已經完成了一個處理郵件、提取細節、存儲附件並在Google Sheets中保持一切井然有序的項目。這是用戶友好、實用且準備解決現實問題的。
📚 數字海洋的12天
這標誌著數字海洋的12天系列的結束。在過去的12天裡,我們一步一步地構建了兩個現實世界的應用。在此過程中,您使用了DigitalOcean的無伺服器函數、應用平台、Spaces物件存儲、PostgreSQL、DigitalOcean GenAI、Twilio、Google Sheets API、Postmark、PaperTrail和Resend等工具。每個部分聚集在一起形成了比其各自更大的東西。
以下是您所構建的快速回顧:
🎂 第1至6天:構建生日提醒服務
這個應用程序跟蹤生日並自動發送簡訊提醒。它輕量、無伺服器且易於維護。
- 第一天:設置 PostgreSQL 數據庫
創建一個數據庫來存儲聯絡人詳細信息。 - 第二天:使用 Python 連接 PostgreSQL
安全地連接到您的數據庫並獲取數據。 - 第三天:檢查生日並發送簡訊通知
使用 Twilio 通知用戶即將到來的生日。 - 第四天:部署到 DigitalOcean Functions
將您的應用程序部署到雲端,使用 DigitalOcean Functions。 - 第五天:使用觸發器自動化每日提醒
安排提醒每天自動運行。 - 第6天:設置外部日誌記錄
使用Papertrail監控和疑難排解您的應用程式。
到了第6天,您在雲端運行了一個完全自動化的服務。它運作正常。
📧 第7–12天:建立電子郵件收據處理器
此應用程式處理電子郵件收據,提取所需的詳細資料,並將所有內容組織到資料庫中。
- 第7天:建立並部署Flask應用程式
建立一個輕量級應用程式來處理收據郵件。 - 第8天:整合Postmark進行郵件處理
將郵件轉發到您的應用程式進行處理。 - 第9天:使用DigitalOcean的GenAI提取和清理數據
使用GenAI從郵件內容中提取結構化數據。 - 第10天:配置DigitalOcean Spaces以便安全存储
使用对象存储安全存储电子邮件附件。 - 第11天:将收据数据保存到Google Sheets
在电子表格中组织结构化数据,方便访问。 - 第12天:发送确认邮件
通知用户有关成功处理的收据。
到第12天,您已经构建了一个完整的工具,负责端到端处理收据。
您学到了什么
- 存储和管理数据:您使用了PostgreSQL来进行结构化数据存储,使用了Google Sheets来进行便捷、可共享的数据记录。
- 自動化工作流程:通過DigitalOcean的函數和定時觸發器,您自動化了流程,使應用程式運行如時鐘般精確。
- 為您的應用程式添加智能:通過集成DigitalOcean的GenAI,您將智能數據提取和組織引入工作流程,使您的應用程式更智能、更強大。
- 安全處理文件:您使用DigitalOcean的Spaces來以可靠、可擴展的方式存儲和管理文件。
- 通過API增強應用程式:像Twilio、Postmark和Resend這樣的API為您的應用程式帶來了功能,如短信通知、郵件轉發和確認郵件。
- 除錯和監控:使用像Papertrail這樣的工具,您學會了有效地除錯和監控您的應用程式,讓它們保持順利運行。
接下來
這只是個開始——您在這裡學到的知識可以應用於無數其他專案。以下是一些繼續前進的方法:
- 加入DigitalOcean的Discord對話,與其他開發人員連線,分享您所建立的內容,並獲得靈感。
- 在我們的教程庫中探索更多想法和專案。
如果您繼續前進,我很樂意看到您的創作——歡迎在Twitter上與我分享您的進度或反饋。
保持簡單。建立有用的東西。祝您建造愉快!🚀
Source:
https://www.digitalocean.com/community/tutorials/sending-confirmation-emails-with-resend