DengQN·一个普通程序员;
【折腾】Golang发送邮件
2024-01-15 19:50 157

1、使用的包是 "gopkg.in/gomail.v2"

2、直接上代码

// address1, address2  支持多个参数
func sendEmail(addresses string, content string) {
	d := gomail.NewDialer("mail.xxxx.xx", 587, "xxxxx@xxx.com", "密码")
	d.TLSConfig = &tls.Config{InsecureSkipVerify: true}

	// 1. 首先构建一个 Message 对象,也就是邮件对象
	msg := gomail.NewMessage()
	// 2. 填充 From,注意第一个字母要大写
	msg.SetHeader("From", "Xxxxx@xxx.com")
	// 3. 填充 To
	msg.SetHeader("To", addresses)
	// 4. 如果需要可以填充 cc,也就是抄送
	// msg.SetHeader("Cc", "cc_address@example.com")
	// 5. 设置邮件标题
	msg.SetHeader("Subject", "Jenkins提醒")
	// 6. 设置要发送的邮件正文
	// 第一个参数是类型,第二个参数是内容
	// 如果是 html,第一个参数则是 `text/html` 如果是文本则是"text/plain"
	msg.SetBody("text/html", content)

	if e := d.DialAndSend(msg); e != nil {
		log.Println("报错:", e.Error())
	}
}

3、参数传入接收对象和内容(html)

var recv *string
var msg *string

func main() {
	recv = flag.String("r", "", "要通知的人,如:张三")
	msg = flag.String("m", "", "内容")

	flag.Parse()

	if *recv == "" || *recv == "无" || *recv == "不通知" {
		log.Println("没设置要通知的人")
		return
	}

	if *msg == "" {
		log.Println("没设置要通知的内容")
		return
	}

	addrs := strings.Split(*recv, ",")
	for i := 0; i < len(addrs); i++ {
		sendEmail(addrs[i], *msg)
	}
}

把build出来的二进制ln到/usr/bin 就可以在Jenkins里随意调用了

结合Jenkins的一些环境变量

image.png

怎么全码了

4、配合自己的邮箱服务,可以随便玩了