使用Golang的gomail庫實現(xiàn)郵件發(fā)送功能
學習筆記-Go gomail
本篇博客以126郵箱為例,介紹如何使用Golang的gomail
庫實現(xiàn)郵件發(fā)送功能。
0.準備工作
- 安裝Golang環(huán)境
- 安裝
gomail
庫go get gopkg.in/gomail.v2
- 申請126郵箱的SMTP服務(wù),并獲取授權(quán)碼
打開126郵箱的網(wǎng)頁,點擊設(shè)置-POP3/SMTP/IMAP服務(wù),開啟POP3/SMTP服務(wù),并獲取授權(quán)碼。
1.在config文件中配置SMTP服務(wù)器信息
在項目的config
目錄下,創(chuàng)建一個config.yaml
文件,并配置SMTP服務(wù)器信息。126郵箱的SMTP服務(wù)器地址為smtp.126.com
,端口為465
,用戶名為你的126郵箱地址,密碼為你申請的授權(quán)碼。
# config.yaml mail: smtp: smtp.126.com smtp-port: 465 user: your_email@126.com password: your SMTP password
2.編寫郵件發(fā)送函數(shù)
創(chuàng)建SendEmail函數(shù),接收目標郵箱地址、郵件主題、郵件內(nèi)容作為參數(shù),并讀取配置文件中的SMTP服務(wù)器信息。SendEmail會依據(jù)讀取的配置信息,連接到SMTP服務(wù)器,并創(chuàng)建郵件對象,設(shè)置郵件頭、收件人、抄送人、主題、內(nèi)容等信息,然后發(fā)送郵件。
func SendEmail(target, subject, content string) { server, port, usr, pwd := config.GetSMTPConfig() fmt.Println("SMTP服務(wù)器:", server, "端口:", port, "用戶名:", usr, "密碼:", pwd) // 創(chuàng)建一個新的郵件發(fā)送器 d := gomail.NewDialer(server, port, usr, pwd) d.TLSConfig = &tls.Config{InsecureSkipVerify: true} // 嘗試連接并獲取 SendCloser sendCloser, err := d.Dial() if err != nil { if netErr, ok := err.(net.Error); ok && netErr.Timeout() { fmt.Println("連接超時:", err) } else if opErr, ok := err.(*net.OpError); ok { fmt.Println("操作錯誤:", opErr) } else { fmt.Println("連接錯誤:", err) } return } defer sendCloser.Close() // 確保在函數(shù)結(jié)束時關(guān)閉連接 fmt.Println("成功連接到SMTP服務(wù)器") // 創(chuàng)建郵件 m := gomail.NewMessage() // 設(shè)置郵件頭 m.SetHeader("From", usr) // 設(shè)置收件人 m.SetHeader("To", target) // 設(shè)置抄送人為自己 m.SetAddressHeader("Cc", usr, "admin") // 設(shè)置郵件主題 m.SetHeader("Subject", subject) // 設(shè)置郵件內(nèi)容,支持html格式 m.SetBody("text/html", content) // 發(fā)送郵件 if err := d.DialAndSend(m); err != nil { fmt.Println("郵件發(fā)送錯誤:", err) return } fmt.Println("郵件發(fā)送成功!") }
3.調(diào)用SendEmail函數(shù)發(fā)送郵件
在需要發(fā)送郵件的地方,調(diào)用SendEmail函數(shù),傳入目標郵箱地址、郵件主題、郵件內(nèi)容作為參數(shù)。
func main() { email := "target_email@xxx.com" SendEmail(email, "test email", "<h1>測試郵件內(nèi)容</h1>") }
到此這篇關(guān)于如何使用Golang的gomail庫實現(xiàn)郵件發(fā)送功能的文章就介紹到這了,更多相關(guān)Golang gomail庫郵件發(fā)送內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang中ringbuffer的實現(xiàn)與應用場景詳解
ringbuffer因為它能復用緩沖空間,通常用于網(wǎng)絡(luò)通信連接的讀寫,雖然市面上已經(jīng)有了go寫的諸多版本的ringbuffer組件,但還是自己造一個吧2023-06-06Go語言設(shè)計模式之實現(xiàn)觀察者模式解決代碼臃腫
今天學習一下用?Go?實現(xiàn)觀察者模式,觀察者模式主要是用來實現(xiàn)事件驅(qū)動編程。事件驅(qū)動編程的應用還是挺廣的,除了我們都知道的能夠用來解耦:用戶修改密碼后,給用戶發(fā)短信進行風險提示之類的典型場景,在微服務(wù)架構(gòu)實現(xiàn)最終一致性、實現(xiàn)事件源A?+?ES2022-08-08Go集成swagger實現(xiàn)在線接口文檔的教程指南
wagger是一個用于設(shè)計,構(gòu)建和文檔化API的開源框架,在Go語言中,Swagger可以幫助后端開發(fā)人員快速創(chuàng)建和定義RESTful API,并提供自動生成接口文檔的功能,所以本文給大家介紹了Go集成swagger實現(xiàn)在線接口文檔的方法,需要的朋友可以參考下2024-11-11