使用Google SMTP 寄發信件 - antqtech/KM GitHub Wiki
本文將示範如何使用 Google 的 SMTP 伺服器來完成此驗證信的寄送設置,提供完整的寄信流程與相關配置。
若要使用 SMTP 功能寄信,需要先申請 [應用程式密碼],以下是申請步驟:
1.請先確保已登入要設置的google帳號,並進入安全設定頁面。
2.在【登入Google的方式】區塊中=>點選【兩步驗驟證】
3.點擊【開始使用】按鈕。
4.設定驗證電話: 輸入手機號碼並選擇驗證方式(傳送簡訊/電話) ,完成後按【下一步】。
5.填入收到的驗證碼,按【下一步】。然後點擊【啟用】。
6.返回【兩步驟驗證】頁面,找到【應用程式密碼】並點擊進入。
7.為密碼設定名稱,按【建立】生成應用程式密碼。
8.畫面將顯示16字位元的應用程式密碼,請妥善保存,稍後SMTP設定時將會使用到。
完成以上步驟後,就可以寫程式碼設定SMTP,以下範例程式碼顯示如何在C#中使用SMTP設定來實現Gmail寄信功能。
using System.Net;
using System.Net.Mail;
public void SendEmail(string recipientEmail, string subject, string body)
{
// 設定 SMTP 伺服器
SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 465)
{
EnableSsl = true,
Credentials = new NetworkCredential("你的gmail帳號@gmail.com", "google應用程式密碼")
};
`// 設定郵件內容`
`MailMessage mailMessage = new MailMessage`
`{`
`From = new MailAddress("你的gmail帳號@gmail.com", "你的網站名稱"), // 可選:自定義寄件人名稱`
`Subject = subject,`
`Body = body,`
`IsBodyHtml = true // 若內容包含 HTML,則設為 true`
`};`
`mailMessage.To.Add(recipientEmail);`
`try`
`{`
`// 發送郵件`
`smtpClient.Send(mailMessage);`
`Console.WriteLine("確認信已成功寄出");`
`}`
`catch (Exception ex)`
`{`
`Console.WriteLine($"寄信失敗:{ex.Message}");`
`}`
}
程式碼說明:
- SmtpClient:用來設定SMTP伺服器,連接埠,是否啟用SSL,以及帳號或密碼。
- MailMessage: 用來設定郵件內容,包括寄件人,收件人,主旨和內容。
- Try-Catch: 添加錯誤處理以便偵測寄信錯誤並進行相應處理(如日誌紀錄或顯示錯誤錯誤訊息)。
此功能應用於新註冊會員的帳號啟用信。您可以在body中HTML隔式的驗證連結,指向網站的帳號啟用面。例如:
string emailBody = $@"
<h2>歡迎加入我們的網站!</h2>
<p>請點擊以下連結以啟用您的帳戶:</p>
<a href='https://yourwebsite.com/activate?token={activationToken}'>啟用帳戶</a>
<p>如果您沒有進行此註冊,請忽略此信。</p>
";
在註冊流程中生成 activationToken 並包含在連結中,以便用戶點擊後導向您的後端進行驗證和帳戶啟用。
而activationToken是一個用來唯一標識新會員並確保帳號啟用的安全性標記(token)。一般來說,這個token是在用戶註冊時由後端系統產生的,可以利用以下方法生成:
1.使用GUID(Globally Unique Identifier)生成唯一Token:
GUID是一種全球唯一的識別碼,可以直接生成作為token。C#中可以用以下方式生成:
string activationToken = Guid.NewGuid().ToString();
2.加密生成Token: 如果希望token包含用戶ID或其他信息,可以使用加密算法對其進行加密,例如JWT(Json Web Token)。這樣可以在後端解密並驗證token是否有效。
使用者點擊連結後,系統可根據URL中的token值找到對應的會員紀錄,確認後更新狀態至已啟用。