gopkg.in/gomail.v2
package model
import (
"fmt"
"gopkg.in/gomail.v2"
"net/smtp"
"strings"
)
const (
// 邮件服务器地址
MailHost = "smtp.163.com"
// 端口
MailPort = 25
// 发送邮件用户账号
MailUser = "******@163.com"
// 授权密码
MailPwd = "********"
)
/*
title 使用gomail发送邮件
@param []string mailAddress 收件人邮箱
@param string subject 邮件主题
@param string body 邮件内容
@return error
*/
func SendGoMail(mailAddress []string, subject string, body string) error {
m := gomail.NewMessage()
// 这种方式可以添加别名,即 nickname, 也可以直接用<code>m.SetHeader("From", MAIL_USER)</code>
nickname := "gomail"
m.SetHeader("From",nickname + "<" +MailUser+ ">")
// 发送给多个用户
m.SetHeader("To", mailAddress...)
// 设置邮件主题
m.SetHeader("Subject", subject)
// 设置邮件正文
m.SetBody("text/html", body)
d := gomail.NewDialer(MailHost, MailPort, MailUser, MailPwd)
// 发送邮件
err := d.DialAndSend(m)
return err
}
package model
import "testing"
func TestSendGoMail(t *testing.T) {
type args struct {
mailAddress []string
subject string
body string
}
tests := []struct {
name string
args args
wantErr bool
}{
// TODO: Add test cases.
{
name: "01",
args:
args{
subject:"您好,这是gomail-text测试邮件",
mailAddress:[]string{"******@qq.com"},
body:`
您的服务存在异常,请查收!!!
`} ,
wantErr:false },
{
name: "02",
args:
args{
subject:"您好,这是gomail-html测试邮件",
mailAddress:[]string{"*****@qq.com"},
body:`<html>
<body>
<h1>您的服务存在异常</h1>
</body>
</html>
`} ,
wantErr:false },
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if err := SendGoMail(tt.args.mailAddress, tt.args.subject, tt.args.body); (err != nil) != tt.wantErr {
t.Errorf("SendGoMail() error = %v, wantErr %v", err, tt.wantErr)
}
})
}
}