如何使用電子郵件包在 Go 中發送郵件

如何使用電子郵件包在 Go 中發送郵件

在構建應用程序時,您需要出於不同目的發送電子郵件,從通知到身份驗證等等。Go在其標準庫中提供了用於發送電子郵件的smtpmail包。Go 生態系統中還有許多第三方電子郵件包。

內置郵件包使發送電子郵件成為一項複雜的任務。如果您不是服務器端應用程序開發人員,您可能會發現smtp郵件包的使用和配置很棘手。

一種流行的替代方案是 Jordan Wright 的電子郵件包,它抽象了發送郵件的複雜性。它還添加了您在smtp郵件包中找不到的功能。

開始使用電子郵件包

郵件包github預覽

電子郵件包是一個輕量級、健壯且靈活的庫,因其簡單性而廣受歡迎。只需幾行代碼,您就可以創建和發送帶有附件、HTML 內容等的電子郵件。該軟件包還支持安全 SMTP 連接和多個收件人等高級功能,使其成為滿足您電子郵件需求的多功能工具。

電子郵件包還支持 CC 和 BCC 字段、多種格式的電子郵件地址、已讀回執和自定義標題。

由於該包未內置到 Go 標準庫中,因此您需要使用go get命令安裝它。email 包支持 Go 1.15 及以上版本。

初始化新項目後,運行此命令將包安裝到項目的依賴項中。

go get github.com/jordan-wright/email

安裝電子郵件包後,您可以通過指定相對於安裝路徑的位置來導入它:

import (
    "fmt"
    "github.com/jordan-wright/email"
    "net/smtp"
)

您將使用fmt包將輸出打印到控制台,並使用smtp包進行身份驗證。

使用電子郵件包發送郵件

您需要聲明變量來存儲郵件數據。為您的電子郵件和密碼聲明變量。

mail: = "your email"
password: = "your app password"

您可以對密碼進行硬編碼或使用環境變量文件來提高安全性。

mailpassword變量應分別保存您的電子郵件和密碼。

您需要為郵件的主機地址和端口號聲明變量。以下是 Yahoo 郵件的主機地址和端口號:

hostAddress: = "smtp.mail.yahoo.com"
hostPort: = "465"

您還需要創建一個新的電子郵件實例來發送帶有電子郵件包的電子郵件。您可以使用電子郵件包的 NewEmail 方法為您的郵件初始化電子郵件實例:

newEmail: = email.NewEmail()

NewEmail方法返回一個結構實例,您可以為電子郵件的元素修改該實例。

您可以使用該結構的FromTo字段將發件人和收件人電子郵件添加到您的電子郵件實例。

newEmail.From = mail
newEmail.To = []string{"list of recipients"}

To字段是一段具有無限容量的字符串,您可以使用它來聲明所有收件人地址。

您可以使用結構實例的BccCc字段添加電子郵件的CCBCC字段:

newEmail.Bcc = []string{"list of bcc"}
newEmail.Cc = []string{"list of cc"}

對於郵件的內容,您可以使用結構的主題文本字段添加電子郵件的主題和文本內容。主題是一個字符串字段,文本內容是一個字節切片。

newEmail.Subject = "The Email subject"
newEmail.Text = []byte("Body of your email")

添加所有必填字段後,您可以使用電子郵件實例的Send方法發送電子郵件。Send方法接收主機地址、主機端口號和smtp包的PlainAuth實例

err: = newEmail.Send(
   fmt.Sprintf("%s:%s", hostAddress, hostPort),
   smtp.PlainAuth("", mail, password, hostAddress)
)

if err! = nil {
    fmt.Println("There was an error sending the mail")
} else {
    fmt.Println("The mail was sent successfully")
}

Send方法返回一個您可以處理的錯誤,如果沒有錯誤則返回nil 。

發送郵件的結果

您已經成功發送了一封帶有email包的郵件,其行數少於您使用smtp包發送郵件所需的行數。

您可以使用內置的 SMTP 包發送郵件

Go 是一種精心設計的語言,因為它的標準庫附帶了構建完整 Web 應用程序所需的大部分功能,而無需外部依賴項或第三方包。

smtp包可以方便地通過具有與電子郵件包類似功能的各種服務發送電子郵件

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *