1 前言
定義郵箱服務器連接信息,如果是網易郵箱 pass填密碼,qq郵箱填授權碼(客戶端專用密碼)。
gomail包:
go get gopkg.in/gomail.v2
更多功能可以參考 https://github.com/go-gomail/gomail
2 代碼
/**
* @Author: FB
* @Description:
* @File: main.go
* @Version: 1.0.0
* @Date: 2019/9/7 14:01
*/
package main
import (
"gopkg.in/gomail.v2"
"strconv"
"log"
"fmt"
)
func SendMail(mailTo []string, subject string, body string) error {
//定義郵箱服務器連接信息,如果是網易郵箱 pass填密碼,qq郵箱填授權碼
//mailConn := map[string]string{
// "user": "xxx@163.com",
// "pass": "your password",
// "host": "smtp.163.com",
// "port": "465",
//}
mailConn := map[string]string{
"user": "xxx@sample.cn",
"pass": "r4r3St*****7a7Uk",
"host": "smtp.exmail.qq.com",
"port": "465",
}
port, _ := strconv.Atoi(mailConn["port"]) //轉換端口類型為int
m := gomail.NewMessage()
m.SetHeader("From", m.FormatAddress(mailConn["user"], "XX官方")) //這種方式可以添加別名,即“XX官方”
//說明:如果是用網易郵箱賬號發送,以下方法別名可以是中文,如果是qq企業郵箱,以下方法用中文別名,會報錯,需要用上面此方法轉碼
//m.SetHeader("From", "FB Sample"+"<"+mailConn["user"]+">") //這種方式可以添加別名,即“FB Sample”, 也可以直接用<code>m.SetHeader("From",mailConn["user"])</code> 讀者可以自行實驗下效果
//m.SetHeader("From", mailConn["user"])
m.SetHeader("To", mailTo...) //發送給多個用戶
m.SetHeader("Subject", subject) //設置郵件主題
m.SetBody("text/html", body) //設置郵件正文
d := gomail.NewDialer(mailConn["host"], port, mailConn["user"], mailConn["pass"])
err := d.DialAndSend(m)
return err
}
func main() {
//定義收件人
mailTo := []string{
"abc@sample.com",
}
//郵件主題為"Hello"
subject := "Hello by golang gomail from exmail.qq.com"
// 郵件正文
body := "Hello,by gomail sent"
err := SendMail(mailTo, subject, body)
if err != nil {
log.Println(err)
fmt.Println("send fail")
return
}
fmt.Println("send successfully")
}
3 參考
