iT邦幫忙

2025 iThome 鐵人賽

DAY 16
0
生成式 AI

VIBE CODING 全紀錄:0 經驗用 AI 打造 PWA 兒童任務管理平台》系列 第 16

(Day 16)AI 幫我打造信件報告與回饋系統:從 Gmail、SendGrid 到 Resend 的選擇

  • 分享至 

  • xImage
  •  

在完成兒童任務管理平台的核心功能後,我又在 AI 的協作下,快速打造了「每週報告」:彙整任務完成率、活動紀錄與獎勵兌換等等;接著,我又想到的一個適合的常見功能"自動將報告寄送到家長信箱",以及方便使用者回饋意見的自動發信功能。以下是我在 Gmail → SendGrid → Resend 三階段之間的選擇、踩坑與轉換。

https://ithelp.ithome.com.tw/upload/images/20250817/201779272Z1TgjEj3e.png


第一階段:Gmail SMTP —— 先用得上、馬上能跑

一開始我最先想到是不是可以直接用 Gmail 做發信,我讓 AI 針對「用 Gmail 自動發信」給出步驟。AI 給的指引相當精準:啟用兩步驟驗證、建立應用程式密碼、在 Firebase Functions 放入認證。就算沒有相關經驗,也能快速照做跑起來

Gmail 應用程式密碼設定

  1. 啟用兩步驟驗證
    • 前往 Google 帳戶設定 → 啟用兩步驟驗證
  2. 生成應用程式密碼
    • 在安全性設定中選擇「應用程式密碼」
    • 生成 16 位密碼

Firebase Functions 設定

# 設定 Gmail 認證資訊
firebase functions:config:set gmail.user="your-email@gmail.com"
firebase functions:config:set gmail.password="your-app-password"

# 部署
firebase deploy --only functions

AI 的提醒:Gmail SMTP 可快速上線,但寄送額度有限、品牌感較弱,且較容易被歸為垃圾信。當專案規模與頻率提升,就會感到壓力。


第二階段:SendGrid —— 專業網域與 API,但條件變動踩雷

AI 建議我用 SendGrid:可驗證自有網域、透過 API 寄信、提升送達率與專業度。當時我選它還有一個原因:每天 100 封免費額度 的方案(非常適合個人小專案起步)。AI 也把實作流程拆清楚:Cloudflare網域購買和設定 DNS(我的網域透過 Cloudflare 購買以及 Firebase 後台設定和部署)、建立 API Key、把金鑰放進 Functions。

設定環境變數

# 設定 SendGrid API Key
firebase functions:config:set sendgrid.apikey="SG.xxxxxxxxxx"

# 部署
firebase deploy --only functions

程式碼實作(TypeScript)

import * as sgMail from '@sendgrid/mail';

const setupSendGrid = () => {
  const apiKey = functions.config().sendgrid?.apikey;
  if (apiKey) {
    sgMail.setApiKey(apiKey);
    return sgMail;
  }
  return null;
};

const sendEmailWithSendGrid = async (mailOptions: any) => {
  const sg = setupSendGrid();
  if (!sg) throw new Error('SendGrid not configured');
  
  const msg = {
    to: mailOptions.to,
    from: mailOptions.from,
    subject: mailOptions.subject,
    text: mailOptions.text,
    html: mailOptions.html,
  };
  
  await sg.send(msg);
};

現實撞牆:兩個月後,我帳戶無預警被停用,查詢後發現免費方案已變動,之後每月約需 20 美元。更慘的是:我本來都打算先付費避免功能壞掉太久(因使用者回饋才發現被停用了),結果就算要付費還得審核,等了 1–2 天都沒辦法用,信件功能直接停擺。這次卡關我再次求助 AI,請它找出替代方案。


第三階段:Resend —— 更符合個人專案的免費額度與簡潔後台

AI 這次推薦了 Resend(不知道為什麼上次建議沒有...)。它對個人專案相當友好,每月 3000 封(或每天約 100 封) 的免費額度,也很符合我每週報告與互動郵件的需求;後台介面也很清爽、操作直覺,不像我當時使用 SendGrid 時那麼卡。

轉換實作(幾乎只換金鑰)

  1. 生成 API Key
    • 在 Resend Dashboard 中生成 API Key
    • 網域連結設定
  2. Firebase Functions 環境變數設定
# 設定 Resend API Key
firebase functions:config:set resend.apikey="re_xxxxxxxxxx"

# 設定開發者郵箱
firebase functions:config:set email.developer="your-email@taskyventure.com"

# 部署設定
firebase deploy --only functions

轉換心得:因為程式邏輯大同小異,實務上幾乎「替換 API Key + 輕微調整」就完成遷移,AI 在關鍵步驟(DNS、金鑰、寄件資訊)都給了檢核清單,避免我漏設定。

(將sendgrid替換成resend其實非常快,後悔沒有在遇到sendgrid被停用時馬上重新找替代方案,導致信件功能停擺了幾天)

https://ithelp.ithome.com.tw/upload/images/20250817/20177927bqogAV8rqS.png


回信與品牌一致:用 Gmail 連結自訂網域

要讓家長能直接回信並維持品牌一致,AI 建議我把 Gmail 設定為以自訂網域寄信(直接在Gmail設定頁面中簡單設定即可,例如 support@taskyventure.com)。這樣寄件地址看起來更專業、回覆也能進到我設定的信箱;配合 Resend 作為寄送 API,就同時兼顧送達率與信箱使用習慣。


Gmail / SendGrid / Resend 快速比較

服務 我在專案中的感受 優點 可能限制
Gmail SMTP 快速上線、少量寄送 OK 設定簡單、無需新服務 容易進垃圾信、品牌感較弱
SendGrid 初期表現不錯,但免費方案變動與審核卡關 專業網域、API 完整、成熟生態 後台卡頓、付費審核流程要提前注意
Resend 最終選擇,轉換成本低 介面簡潔、對個人專案友善、額度符合需求 生態系相對新

我如何把 AI 當「協作開發者」

  • 需求拆解:AI 先幫我釐清「每週報告」要包含哪些欄位、何時寄送。
  • 技術路徑:從 Gmail 再到 SendGrid、Resend,AI 依需求(額度、品牌、送達率)給出客觀比較與遷移流程。
  • 故障排除:被停用與審核延遲時,AI 提供替代服務與風險評估,讓我能在 1 次迭代內恢復功能。

AI 不是取代我,而是讓我像「一人小團隊」——我把精力放在體驗與內容,基礎設施與細節交給 AI 帶我一步步完成。


將信件功能打造成完整閉環:新手操作建議

  • 先用 Gmail SMTP 讓原型動起來;當寄送頻率與品牌要求提升,再平滑切到 API 服務
  • 若你和我一樣使用小量穩定免費額度 + 簡單後台,可以試試 Resend
  • 全程讓 AI 當你的技術導演:要文件、要步驟、要比較、要遷移清單,直接請它列出「最小可行方案(MVP)」與「下一步優化」。

對我來說,這不只是把信寄出去,而是把「每週報告 → 郵件 → 回饋」串成一條完整、清晰的產品脈絡。AI 的角色,就是讓這條路變短、變穩、變專業。只要問題夠清楚,AI 就能把步驟、工具、風險與替代方案排好隊,讓你專心把價值交付給用戶。

敬請期待下一篇《從網頁到 App:AI 幫我重塑兒童任務管理平台體驗》


上一篇
(Day 15)和 AI 一起打造睡前檢查表:建立孩子安心入睡的溫馨儀式
下一篇
(Day 17)從網頁到 App:AI 幫我重塑兒童任務管理平台體驗
系列文
VIBE CODING 全紀錄:0 經驗用 AI 打造 PWA 兒童任務管理平台》30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言