跳过正文
  1. 文章/
  2. GoLang/
  3. 常用包/
  4. 第三方包/

6、gomail

·405 字·1 分钟· loading · loading · ·
GoLang 常用包 第三方包
GradyYoung
作者
GradyYoung
目录
第三方包 - 点击查看当前系列文章
§ 6、gomail 「 当前文章 」

Gomail 是发送电子邮件的简单高效的包。它已经过充分测试和记录。Gomail 只能使用 SMTP 服务器发送电子邮件。但是该 API 灵活,可以轻松实现使用本地 Postfix,API 等发送电子邮件的其他方法。

gomail 包含的特性

  • 附件
  • 嵌入图片
  • HTML 和文本模板
  • 特殊字符的自动编码
  • SSL 和 TLS
  • 使用相同的 SMTP 连接发送多封电子邮件

安装
#

go get -u gopkg.in/gomail.v2

使用
#

package main

import (
	"crypto/tls"
	"fmt"

	"gopkg.in/gomail.v2"
)

type EmailConf struct {
	From     string
	Host     string
	Port     int
	UserName string
	PassWord string
}

var EmailSuper = EmailConf{
	From:     "测试邮箱",
	Host:     "smtp.exmail.qq.com",
	Port:     465,
	UserName: "hello@qq.com",
	PassWord: "123456789",
}

func SendMail(ec EmailConf, subject, body string, to, cc, bcc, attaches []string) error {
	m := gomail.NewMessage()
	m.SetHeader("From", m.FormatAddress(ec.UserName, ec.From)) // 发送者
	m.SetHeader("To", to...)                                   // 接受者
	m.SetHeader("Cc", cc...)                                   // 抄送
	m.SetHeader("Bcc", bcc...)                                 // 暗送
	m.SetHeader("Subject", subject)                            // 邮件标题
	m.SetBody("text/html", body)                               // 发送邮件内容,text/plain为纯文本
	for _, att := range attaches {                             // 添加附件
		m.Attach(att)
	}
	/*
		实例化邮件发送器
		第一个参数为服务器地址,第二个为端口号,第三个为发送者邮箱号
		第四个如果是qq邮箱为授权玛而其他邮箱是密码
	*/
	d := gomail.NewDialer(ec.Host, ec.Port, ec.UserName, ec.PassWord)
	// 关闭SSL协议认证
	d.TLSConfig = &tls.Config{InsecureSkipVerify: true}

	if err := d.DialAndSend(m); err != nil {
		return err
	}
	return nil
}

func main() {
	to := []string{"123456789@qq.com"}
	attaches := []string{"./go.mod"}
	err := SendMail(EmailSuper, "nihao", "hello golang!", to, nil, nil, attaches)
	if err != nil {
		fmt.Println(err)
	}
}
第三方包 - 点击查看当前系列文章
§ 6、gomail 「 当前文章 」