Gomail
Gomail 是一个简单、高效的发送电子邮件包,它经过良好的测试和记录。
Gomail 只能使用 SMTP 服务器发送电子邮件,但是 API 比较灵活的,很容易实现其他方法使用本地 Postfix、API 等发送电子邮件。
项目地址: https://github.com/go-gomail/gomail
特性
Gomail 支持:
- 附件
- 嵌入图像
- HTML 和文本模板
- 特殊字符的自动编码
- SSL 和 TLS
- 使用相同的 SMTP 连接发送多封电子邮件
使用
下载gomail
go get gopkg.in/gomail.v2
使用代码
import (
"bytes"
"fmt"
"gopkg.in/gomail.v2"
"html/template"
"strings"
"time"
)
const XXX_MAIL_TEMPLATE = `
<div>
<h3>123</h3>
<p>3456</p>
<h3>789</h2>
<table style="border-collapse:collapse;border: 1px solid black;">
<thead style="border-collapse:collapse;border: 1px solid black;">
<tr style="border-collapse:collapse;border: 1px solid black;text-align: center;">
<th style="border-collapse:collapse;border: 1px solid black;">Case Name</th>
<th style="border-collapse:collapse;border: 1px solid black;">Owner</th>
<th style="border-collapse:collapse;border: 1px solid black;">Creator</th>
<th style="border-collapse:collapse;border: 1px solid black;">Status</th>
</tr>
</thead>
<tbody>
{{with .Job}}
{{range $k, $v := .Cases}}
<tr style="border-collapse:collapse;border: 1px solid black;text-align: center;">
<td style="border-collapse:collapse;border: 1px solid black;">{{$v.Name}} </td>
<td style="border-collapse:collapse;border: 1px solid black;">{{$v.IsSuccess}} </td>
<td style="border-collapse:collapse;border: 1px solid black;">{{$v.Agent}} </td>
</tr>
{{end}}
{{end}}
</tbody>
</table>
</div>`
func main() {
temp := PageInfo{Job: &job}
MAIL_TEMPLATE := XXX_MAIL_TEMPLATE
m := gomail.NewMessage()
m.SetHeader("From", "1[email protected]")
m.SetHeader("To", strings.Split(temp.Emails, ",")...))//send email to multipul persons
m.SetHeader("Subject", "Hello!")
t, err := template.New("mail summary template").Parse(MAIL_TEMPLATE)
if err != nil {
return
}
buffer := new(bytes.Buffer)
t.Execute(buffer, temp)
m.SetBody("text/html", buffer.String())
d := gomail.Dialer{Host: "smtp.qq.com", Port: 465, Username: "[email protected]", Password: "ocozlhmwsvxhbidd",SSL:true}
if err := d.DialAndSend(m); err != nil {
return
}
return
}
运行,发送成功之后,就能收到邮件了。
常用邮箱
列举一些常用的邮箱,可以用来测试:
QQ 邮箱
POP3 服务器地址:qq.com(端口:995)
SMTP 服务器地址:smtp.qq.com(端口:465/587)
163 邮箱:
POP3 服务器地址:pop.163.com(端口:110)
SMTP 服务器地址:smtp.163.com(端口:25)
126 邮箱:
POP3 服务器地址:pop.126.com(端口:110)
SMTP 服务器地址:smtp.126.com(端口:25)
开启服务
出于邮箱安全的考虑,很多邮箱缺省是关闭 POP3/SMTP 服务的,需要登录邮箱设置后开启。
以 QQ 邮箱为例,进入邮箱“设置”,在“帐户”项里就可找到“POP3/SMTP服务”的设置项,进行开启。
温馨提示:登录第三方客户端时,密码框请输入“授权码”进行验证。
也就是说,在使用 QQ 邮箱发送邮件的时候,需要使用授权码,而不是 QQ 密码!