使用gopkg.in/gomail.v2

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