前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang 语言怎么使用 gomail 库发送邮件?

Golang 语言怎么使用 gomail 库发送邮件?

作者头像
frank.
发布2021-01-08 15:26:23
3.2K0
发布2021-01-08 15:26:23
举报

01

介绍

我们在项目开发中,经常会遇到发送邮件的需求,比如给开发人员发送报警邮件,给用户发送优惠券或兑换码等。

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

它使用 gopkg.in 进行了版本控制,因此保证每个版本都不会存在向后不兼容的更改。它需要 Go 1.2 或更高版本。对于 Go 1.5,不使用外部依赖项。

02

gomail 包含的特性

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

03

gomail 安装

使用 go get 安装:

代码语言:javascript
复制
go get gopkg.in/gomail.v2

04

gomail 使用

准备邮箱服务:

如果想要使用 gomail 开发发送邮件的功能,需要准备邮箱服务,除了自建SMTP 服务之外,几乎所有邮箱运营商都支持 SMTP 服务,我们以网易 126 邮箱为例,准备一个网易126 邮箱账号,登录 PC 版邮箱,找到设置,开启 SMTP 服务并记住密码。

示例代码:

代码语言:javascript
复制
package main

import "gopkg.in/gomail.v2"

func main() {
 m := gomail.NewMessage()
 m.SetHeader("From", "xxx@126.com")
 m.SetHeader("To", "xxx@qq.com", "xxx@88.com")
 m.SetAddressHeader("Cc", "xxx@163.com", "Dan")
 m.SetHeader("Subject", "Hello!")
 m.SetBody("text/html", "Hello <b>Bob</b> and <i>Cora</i>!")
 // m.Attach("/home/Alex/lolcat.jpg")

 d := gomail.NewDialer("smtp.126.com", 25, "xxx@126.com", "Your Password")

 // Send the email to Bob, Cora and Dan.
 if err := d.DialAndSend(m); err != nil {
  panic(err)
 }
}

05

常见问题

x509: certificate signed by unknown authority

如果收到此错误,则表示运行 Gomail 的客户端认为 SMTP 服务器使用的证书无效。

快速的解决方法是,您可以使用 SetTLSConfig 绕过服务器证书链和主机名的验证。

代码语言:javascript
复制
package main

import (
 "crypto/tls"

 "gopkg.in/gomail.v2"
)

func main() {
 d := gomail.NewDialer("smtp.example.com", 587, "user", "123456")
 d.TLSConfig = &tls.Config{InsecureSkipVerify: true}

    // Send emails using d.
}

但是请注意,这是不安全的,不应在生产中使用。

06

总结

本文主要是给大家介绍了 Golang 语言中一个非常好用的发送邮件的三方库 gomail,不仅介绍了 gomail 的特性和安装使用方法,还列举了一个常见问题和解决方法。限于篇幅,没有详细介绍 gomail 提供的所有方法,感兴趣的读者可以通过阅读文档深入了解。

参考资料:

https://github.com/go-gomail/gomail

https://godoc.org/gopkg.in/gomail.v2

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Go语言开发栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • x509: certificate signed by unknown authority
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档