关于golang:GOgomail

7次阅读

共计 1531 个字符,预计需要花费 4 分钟才能阅读完成。

参考资料
[1] 应用 gomail 发送邮件
[2] Golang 应用 gomail 包发送邮件

在理论我的项目中,可能会遇到发送邮件的需要,所以就试着实现了一下。可能目前也还没有理论遇到此需要,不过也能够先入手实现一下,兴许此需要正在路上。

1、装置 gomail 包

go get -v gopkg.in/gomail.v2

2、残缺代码

package main

import (
    "fmt"
    "gopkg.in/gomail.v2"
    "mime"
)

/*
go 邮件发送
*/

func SendMail(mailTo []string, subject string, body string) error {
    // 设置邮箱主体
    mailConn := map[string]string{
        "user": "xxx@qq.com",  // 发送人邮箱(邮箱以本人的为准)"pass": "xxx",         // 发送人邮箱的明码,当初可能会须要邮箱 开启受权明码后在 pass 填写受权码
        "host": "smtp.qq.com", // 邮箱服务器(此时用的是 qq 邮箱)}

    m := gomail.NewMessage(
        // 发送文本时设置编码,避免乱码。如果 txt 文本设置了之后还是乱码,那能够将原 txt 文本在保留时
        // 就抉择 utf- 8 格局保留
        gomail.SetEncoding(gomail.Base64),
    )
    m.SetHeader("From", m.FormatAddress(mailConn["user"], "LLL")) // 增加别名
    m.SetHeader("To", mailTo...)                                  // 发送给用户 (能够多个)
    m.SetHeader("Subject", subject)                               // 设置邮件主题
    m.SetBody("text/html", body)                                  // 设置邮件注释

    // 一个文件(退出发送一个 txt 文件):/tmp/foo.txt,我须要将这个文件以邮件附件的形式进行发送,同时指定附件名为:附件.txt
    // 同时解决了文件名乱码问题
    name := "附件.txt"
    m.Attach("E:/GoCode/src/goMail/gomail.txt",
        gomail.Rename(name), // 重命名
        gomail.SetHeader(map[string][]string{"Content-Disposition": []string{fmt.Sprintf(`attachment; filename="%s"`, mime.QEncoding.Encode("UTF-8", name)),
            },
        }),
    )

    /*
        创立 SMTP 客户端,连贯到近程的邮件服务器,须要指定服务器地址、端口号、用户名、明码,如果端口号为 465 的话,主动开启 SSL,这个时候须要指定 TLSConfig
    */
    d := gomail.NewDialer(mailConn["host"], 465, mailConn["user"], mailConn["pass"]) // 设置邮件注释
    //d.TLSConfig = &tls.Config{InsecureSkipVerify: true}
    err := d.DialAndSend(m)
    return err
}

func main() {
    // 邮件接管方
    mailTo := []string{
        // 能够是多个接管人
        "xxx@163.com",
        "xxx@qq.com",
    }

    subject := "Hello World!" // 邮件主题
    body := "测试发送邮件"          // 邮件注释

    err := SendMail(mailTo, subject, body)
    if err != nil {fmt.Println("Send fail! -", err)
        return
    }
    fmt.Println("Send successfully!")
}
正文完
 0