源码
package main

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

type mail struct {
	senderAddr    string   // 发件人地址
	senderName    string   // 发件人名称
	receiverAddr []string // 收件人地址,可以有多个收件人
	subject       string   // 邮件主题
	text          string   // 正文
	host          string   // 邮件服务器地址
	port          int      // 邮件服务器端口号
	username      string   // 用户名
	password      string   // 密码或授权码
}

func main() {
	m := mail{
		senderAddr:    "sender@163.com",
		senderName:    "senderName",
		receiverAddr: []string{"receiver@163.com", "receiver@163.com"},
		subject:       "subject",
		text:          "test",
		host:          "smtp.163.com",
		port:          25,
		username:      "username@163.com",
		password:      "password",
	}
	SendMail(&m)
}

func SendMail(s *mail) {
	m := gomail.NewMessage()
	m.SetHeaders(map[string][]string{
		"From":    {m.FormatAddress(s.senderAddr, s.senderName)}, // 发件人邮箱,发件人名称
		"To":      s.receiverAddr,                               // 多个收件人
		"Subject": {s.subject},                                   // 邮件主题
	})
	m.SetBody("text/plain", s.text)
	d := gomail.NewDialer(s.host, s.port, s.username, s.password) // 发送邮件服务器、端口号、发件人账号、发件人密码
	if err := d.DialAndSend(m); err != nil {
		log.Println("send mail err:", err)
	}
}
常见邮箱服务器地址和端口号

163 邮箱:

POP3 服务器地址:pop.163.com(端口:110)

SMTP 服务器地址:smtp.163.com(端口:25 / 465)

126 邮箱:

POP3 服务器地址:pop.126.com(端口:110)

SMTP 服务器地址:smtp.126.com(端口:25)

QQ 邮箱

POP3 服务器地址:qq.com(端口:995)

SMTP 服务器地址:smtp.qq.com(端口:465 / 587)

注意事项

部分邮箱是默认关闭 POP3/SMTP 服务的,需要手动开启,比如 QQ 邮箱。
部分邮箱第三方登录时,不使用密码,使用授权码。

发邮件协议和端口

非加密端口

25端口(SMTP):25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务所开放的,是用于发送邮件。

加密端口

465端口(SMTP SSL):465端口是为SMTP SSL(SMTP-over-SSL)协议服务开放的,这是SMTP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。SMTPS和SMTP协议一样,也是用来发送邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件发送者抗抵赖功能。防止发送者发送之后删除已发邮件,拒不承认发送过这样一份邮件。

收邮件协议和端口

非加密端口

143端口(IMAP):143端口是为IMAP(INTERNET MESSAGE ACCESS PROTOCOL)服务开放的,是用于接收邮件的。

110端口(POP3):110端口是为POP3(Post Office Protocol Version 3,邮局协议3)服务开放的,是用于接收邮件的。

很多邮箱服务提供商简写为不加3的pop(如126邮箱的 pop.126.com)。

加密端口

993端口(IMAP SSL):993端口是为IMAP SSL(IMAP-over-SSL)协议服务开放的,这是IMAP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。IMAPS和IMAP协议一样,也是用来接收邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件接收方抗抵赖功能。防止收件者收件之后删除已收邮件,拒不承认收到过这样一封邮件。

995端口(POP3 SSL):995端口是为POP3 SSSL(POP3-over-SSL)协议服务开放的,这是POP3协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。POP3S和POP3协议一样,也是用来接收邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件接收方抗抵赖功能。防止收件者收件之后删除已收邮件,拒不承认收到过这样一封邮件。

IMAP与POP3有什么区别?

POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上。

而IMAP协议提供webmail 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。