使用gomail发邮件(在Go中发送电子邮件的最佳方式)

 

1 前言

1
定义邮箱服务器连接信息,如果是网易邮箱 pass填密码,qq邮箱填授权码(客户端专用密码)。

 

gomail包:

1
go get gopkg.in/gomail.v2

更多功能可以参考 https://github.com/go-gomail/gomail  

2 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/**
 * @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 参考

1.golang 使用 gomail 发送邮件

2.使用gomail发送邮件之解决附件名乱码的问题

  如果使用的是qq邮箱的话需要把mailConn里面的host改成‘smpt.qq.com‘,user 填写qq邮箱地址, pass需要填写你在qq邮箱设置里面获取到的授权码,qq邮箱需要先去邮箱设置里面开通smtp支持,然后获取授权码。然后就可以用qq邮箱发送了。

 

安装gomail

go get gopkg.in/gomail.v2

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)
}

更多功能可以参考 https://github.com/go-gomail/gomail

golang 使用 gomail 发送邮件

标签:类型   href   实验   pre   邮箱服务器   ret   授权   body   china   

原文地址:http://blog.51cto.com/superzhangqiang/2313517

posted on 2020-11-15 22:23  shuzihua  阅读(1058)  评论(0编辑  收藏  举报

导航