golang 使用 gomail 发送邮件

安装gomail

go get gopkg.in/gomail.v2
package main

import (
    "crypto/tls"
    "fmt"

    "gopkg.in/gomail.v2"
)

func main() {
    test1()
}

func test1() {
    message := `
    <p> Hello %s,</p>
        <p style="text-indent:2em">测试测试测试测试.</p> 
        <p style="text-indent:2em">测试11111</p>
    `

    // QQ 邮箱:
    // SMTP 服务器地址:smtp.qq.com(SSL协议端口:465/994 | 非SSL协议端口:25)
    // 163 邮箱:
    // SMTP 服务器地址:smtp.163.com(端口:25)
    host := "xxxxx"
    port := 25
    userName := "xxxx" // 有些油箱登入名不是邮箱地址
    password := "xxxx"

    fromemail := "xx@xx.com"

    m := gomail.NewMessage()
    m.SetHeader("From", fromemail) // 发件人
    // m.SetHeader("From", "alias"+"<"+userName+">") // 增加发件人别名

    // 多个收件人形式
    // mailTo := []string{
    //  "******@qq.com",
    //  "******@qq.com",
    // }
    // m.SetHeader("To", mailTo...)

    m.SetHeader("To", "xxxxx@qq.com") // 收件人,可以多个收件人,但必须使用相同的 SMTP 连接

    // 多个同上
    // m.SetHeader("Cc", "******@qq.com")                  // 抄送,可以多个
    // m.SetHeader("Bcc", "******@qq.com")                 // 暗送,可以多个
    m.SetHeader("Subject", "发送测试11111") // 邮件主题

    // text/html 的意思是将文件的 content-type 设置为 text/html 的形式,浏览器在获取到这种文件时会自动调用html的解析器对文件进行相应的处理。
    // 可以通过 text/html 处理文本格式进行特殊处理,如换行、缩进、加粗等等
    m.SetBody("text/html", fmt.Sprintf(message, "测试"))

    // text/plain的意思是将文件设置为纯文本的形式,浏览器在获取到这种文件时并不会对其进行处理
    // m.SetBody("text/plain", "纯文本")
    // m.Attach("test.sh")   // 附件文件,可以是文件,照片,视频等等
    // m.Attach("lolcatVideo.mp4") // 视频
    // m.Attach("lolcat.jpg") // 照片

    d := gomail.NewDialer(
        host,
        port,
        userName,
        password,
    )
    // 关闭SSL协议认证
    d.TLSConfig = &tls.Config{InsecureSkipVerify: true}

    if err := d.DialAndSend(m); err != nil {
        panic(err)
    }
}
package main

import (
    "gopkg.in/gomail.v2"
    "strconv"
)

func SendMail(mailTo []string,subject string, body string ) error {
  //定义邮箱服务器连接信息,如果是阿里邮箱 pass填密码,qq邮箱填授权码
    mailConn := map[string]string {
        "user": "zhangqiang@xxxx.com", 
        "pass": "xxxx",  
        "host": "smtp.mxhichina.com",
        "port": "465",
    }

    port, _ := strconv.Atoi(mailConn["port"]) //转换端口类型为int

    m := gomail.NewMessage()
    m.SetHeader("From","XD Game" + "<" + mailConn["user"] + ">")  //这种方式可以添加别名,即“XD Game”, 也可以直接用<code>m.SetHeader("From",mailConn["user"])</code> 读者可以自行实验下效果
    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 {
    "zhangqiang@xxx.com",
    "abc@qq.com",
   "sssdd@qq.com",
    }
   //邮件主题为"Hello"
    subject := "Hello"
   // 邮件正文
    body := "Good"
    SendMail(mailTo, subject, body)
}