【Go Web 開發】發送郵件

在接下來的幾篇文章中,我們將在 API 中注入一些交互,並調整用戶註冊 API 處理函數 registerUserHandler,以便在用戶成功註冊後向其發送歡迎電子郵件。

在這個過程中,我們將討論一些有趣的話題。你將學習:

配置 SMTP 服務器

爲了開發郵件發送功能,需要訪問 SMTP(簡單郵件傳輸協議) 服務器來進行測試。

現在有很多 STMP 服務提供商 (例如 Postmark,Sendgrid 或 Amazon SES) 可以用來發送郵件,你甚至可以自己安裝搭建 SMTP 服務器。但在本書中我們將使用 Mailtrap[https://mailtrap.io/]。

使用 Mailtrap 的原因是因爲它是在開發和測試期間發送電子郵件的專業服務。從本質上講,它將所有電子郵件發送到一個你可以訪問的收件箱,而不是發送給真正的收件人。

作者和這家公司沒有任何聯繫,只是覺得這家公司的服務很好,使用起來也很簡單。他們還提供了一個 “永久免費” 的計劃,這對任何編寫代碼的人來說都應該足夠了。

注意:如果你已經有自己的 STMP 服務器,或想選擇別的服務提供商也是可以的。請直接略過。

配置 Mailtrap

要設置一個 Mailtrap 帳戶,請前往註冊 [https://mailtrap.io/register/signup] 頁面,在那裏可以使用您的電子郵件地址、谷歌或 GitHub 帳戶註冊。註冊並登錄後,應該會看到一個列出可用收件箱的頁面,類似於下面的截圖。

每個 Mailtrap 帳戶都有一個免費的收件箱,默認情況下被稱爲演示收件箱。如果您願意,可以通過單擊 Actions 下面的鉛筆圖標來更改名稱。繼續點擊收件箱,將看到當前是空的沒有任何郵件,如下所示:

每個收件箱都有自己的 SMTP 認證信息,您可以通過單擊 Show credentials 鏈接 (在上面的屏幕截圖中由紅色框突出顯示) 來顯示這些認證信息。類似於下面的截圖。

您使用這些 SMTP 認證信息發送的任何郵件最終都會進入這個收件箱,而不是發送到實際的收件人。如果你跟隨本文操作,請記住自己屏幕顯示的認證信息,後面將會使用到。

上面顯示的認證信息已經重置過了不在生效,請不要使用。

創建郵件模版

首先,我們將歡迎電子郵件的內容設置的非常簡單,僅包括一條短消息,讓用戶知道他們的註冊已成功,並確認了他們的 ID 號。類似於:

Hi,

Thanks for signing up for a Greenlight account. We're excited to have you on board! 

For future reference, your user ID number is 123.

Thanks,

The Greenlight Team

注意: 在歡迎郵件中包含用戶 ID 可能不是你想做的事情,但這是我們演示如何在郵件中包含動態數據的簡單方法——不僅僅是靜態內容。

我們可以採用幾種不同的方法來定義和管理這封電子郵件的內容,但一個方便靈活的方法是使用 html/template 包中的模版功能。

如果你跟隨本系列文章操作,請在項目根目錄中創建 internal/mailer/template 文件夾,然後添加 user_welcome.tmpl 文件,如下所示:

$ mkdir -p internal/mailer/templates
$ touch internal/mailer/templates/user_welcome.tmpl

在這個文件中,我們將定義三個命名模版來作爲我們歡迎郵件的一部分:

更新 internal/mailer/tmeplates/user_welcome.tmpl 文件包含以下模版內容:

{{define "subject"}} Welcome to Greenlight!{{end}}

{{define "plainBody"}}
Hi,

Thanks for singing up for a Greenlight account. We're excited to have you on board!

for future reference, your use ID number is {{.ID}}.

Thanks,

The Greenlight Team
{{end}}

{{define "htmlBody"}}

<!doctype html>
<html>
<head>
    <meta  />
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body> 
    <p>Hi,</p>
    <p>Thanks for signing up for a Greenlight account. We're excited to have you on board!</p> <p>For future reference, your user ID number is {{.ID}}.</p>
    <p>Thanks,</p>
    <p>The Greenlight Team</p>
</body>
</html> 
{{end}}

模版內容包含:

注意:如果你經常修改郵件文本或要求用戶可編輯,可能需要將模版作爲字符串存儲在數據庫中。但我發現,將它們存儲在一個文件中,就像上面操作的,是一種不那麼複雜的方法,也是大多數項目使用的方式。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/JBdrlExFEhFfN9HI81kO9Q