Golang发送邮件常用的7个库推荐


【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务。 查看价格
【AokSend邮件API】:触发式邮件API,15元/万封,99%送达率。 查看价格
【烽火邮箱】:新人领取免费域名邮箱,可用作企业邮箱公司邮箱。 查看价格
【烽火邮箱】:烽火邮箱是一款简洁高效的企业邮箱平台,新客户赠送免费企业邮箱,一个起卖、按月付费(低至9.9元);支持别名邮箱及群组邮箱,支持定制无限邮箱。高权重纯净IP池,系统自带反垃圾机制。
立即查看 >> :企业邮箱价格
【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务,专业研发定制邮件营销系统及邮件群发解决方案!蜂邮自研产品线主要分为标准版、外贸版、企业版、定制版,及邮件API邮件SMTP接口服务。
立即查看 >> :邮件发送价格
【AokSend邮件API】:专注触发式邮件API发送服务。15元/万封,发送验证码邮件、忘记密码邮件、通知告警邮件等,不限速。综合送达率99%、进箱率98%。触发邮件也叫事务性邮件或推送邮件,包含:验证码邮件、重置密码邮件、余额提醒邮件、会员到期邮件、账号认证邮件等!
立即查看 >> :邮件发送价格
Golang 发送邮件常用的 7 个库推荐
在 Golang 开发中,发送邮件是一个非常常见的功能需求。无论是企业应用、邮件订阅服务,还是自动化 scripts,发送邮件的能力都是不可或缺的。然而,Golang 提供的内置库中,并没有直接支持发送邮件的功能。因此,开发者通常会依赖外部库来实现这一功能。
本文将推荐 7 个在 Golang 中常用的发送邮件库,并详细说明它们的优缺点、适用场景以及如何使用。
1. email libraries
简介
email 是一个由 Google 推出的轻量级邮件发送库,专注于简单而高效地发送邮件。它提供了 API,允许开发者轻松构造邮件内容,并发送给多个收件人。
特点
- 轻量级:相比其他邮件库,
email的依赖项非常少,只有几 MB 的 size。 - 快速开发:适合需要快速构建邮件发送功能的项目。
- 支持超文本:可以插入 HTML 轮廓,生成 HTML 邮件。
- 社区支持:在 GitHub 上有活跃的社区,提供了丰富的教程和示例。
使用场景
- 小型项目:如果项目不需要复杂的邮件功能,
email是一个不错的选择。 - 快速原型开发:适合用于邮件测试功能的快速原型开发。
安装
go get github.com/google/email示例代码
package mainimport ( "context" "encoding/json" "email" "fmt")func main() {lesc := &lese{$to: "收件人地址@domain.com", body: `邮件主题`}// 添加附件eq: := &email.QuickEnvelope{ To: "收件人地址@domain.com", Subject: "邮件主题", Body: `邮件正文`, // 添加附件 Attachments: []byte{"附件1", "附件2"}, }// 发送邮件context.Background().QuickSend(&eq).-pill() fmt.Println("邮件已发送成功")}2. gomail
简介
golemail 是一个功能强大的邮件发送库,支持复杂的邮件配置和功能,包括多级收件人、附件上传、邮件日志记录等。它基于 net/http 库,并且提供了高度可配置的 API。
特点
- 功能强大:支持复杂的邮件配置,适合企业级应用。
- 配置灵活:允许自定义邮件头、签名、附件等。
- 日志记录:支持记录发送的邮件日志,便于追踪。
- 依赖项丰富:依赖项包括
context,encoding/json,http, 和net.
使用场景
- 企业级邮件应用:需要复杂的邮件配置和功能的项目。
- 多级收件人:需要发送给多个层级的收件人(例如部门内部)。
- 附件管理:需要上传和管理邮件附件的项目。
安装
go get github.com/gofmans/gmail示例代码
package mainimport ( "context" "encoding/json" "github.com/gofmans/gmail/gmail" "fmt")func main() { // 初始化邮件配置 configured := &configured{ from: "发件人地址@domain.com", } // 创建邮件内容 content := &content{ to: "收件人地址@domain.com", subject: "邮件主题", body: `邮件正文` } // 发送邮件 _, err := gmail.New SendMessage(content, configured) if err != nil { fmt.Println("发送邮件失败:", err) return } // 添加附件 _, err = gmailUpload.AddAttachment("附件1", "文本内容", "application/x-officedocument") if err != nil { fmt.Println("添加附件失败:", err) return } // 发送带有附件的邮件 _, err = gmail.New SendMessage(content, configured, true) if err != nil { fmt.Println("发送邮件失败:", err) return } fmt.Println("邮件已发送成功")}3. snet
简介
snet 是一个高性能的邮件发送库,专为高并发场景设计。它基于 context 库,并且支持多线程、高可用性和高性能。
特点
- 高性能:适用于高并发邮件发送场景。
- 支持多线程:可以同时处理多个邮件发送请求。
- 高可用性:支持负载均衡和错误重试功能。
- 依赖项较少:只需要依赖
context库。
使用场景
- 高并发邮件应用:需要处理大量邮件发送请求的项目。
- 实时通信工具:例如即时通讯应用(IM),需要快速发送邮件。
- 消息队列集成:需要通过消息队列(如 RabbitMQ)发送邮件的项目。
安装
go get github.com/sentryless/snet示例代码
package mainimport ( "context" "encoding/json" "httpon" "snet" "fmt")func main() { // 初始化邮件配置 configured := &snet.Configured{} // 默认配置 configured.To = "收件人地址@domain.com" configured.Subject = "邮件主题" configured.Body = `邮件正文` // 创建邮件内容 content := &snet.Content{ To: configured.To, Subject: configured.Subject, Body: configured.Body, } // 发送邮件 _, err := snet.New(content) if err != nil { fmt.Println("发送邮件失败:", err) return } fmt.Println("邮件已发送成功")}4. qsend
简介
qsend 是一个简单易用的邮件发送库,基于 context 库。它提供了友好的命令行界面和 API,适合快速搭建邮件发送功能。

特点
- 命令行友好:提供了命令行工具,方便快速测试和部署。
- 轻量级:依赖项少,适用于小型项目。
- 支持多收件人:可以同时发送给多个收件人。
- 依赖项较少:只需要依赖
context库。
使用场景
- 快速原型开发:适合用于邮件测试功能的快速原型开发。
- 小型项目:不需要复杂功能的项目。
安装
go get github.com/mountainofcode/qsend示例代码
package mainimport ( "context" "encoding/json" "fmt")func main() { // 初始化邮件配置 configured := &context.Configured{} // 默认配置 configured.To = "收件人地址@domain.com" configured.Subject = "邮件主题" configured.Body = `邮件正文` // 发送邮件 _, err := qsend.New(configured) if err != nil { fmt.Println("发送邮件失败:", err) return } fmt.Println("邮件已发送成功")}5. email++ (EmailPlus)
简介
email++ 是一个功能强大的邮件库,支持复杂的邮件配置和功能。它基于 context 库,并且提供了高度可配置的 API。
特点
- 功能强大:支持复杂的邮件配置,包括多级收件人、附件上传、邮件日志记录等。
- 配置灵活:允许自定义邮件头、签名、附件等。
- 依赖项丰富:依赖项包括
context,encoding/json,net, 和time.
使用场景
- 企业级邮件应用:需要复杂的邮件配置和功能的项目。
- 多级收件人:需要发送给多个层级的收件人(例如部门内部)。
- 附件管理:需要上传和管理邮件附件的项目。
安装
go get github.com/google/emailpp示例代码
package mainimport ( "context" "encoding/json" "emailpp" "fmt")func main() { // 初始化邮件配置 configured := &emailpp.Configured{} // 默认配置 // 创建邮件内容 content := &emailpp.Content{ To: "收件人地址@domain.com", Subject: "邮件主题", Body: `邮件正文`, } // 发送邮件 _, err := emailpp.New(content, configured) if err != nil { fmt.Println("发送邮件失败:", err) return } // 添加附件 _, err = emailpp.AddAttachment(content, `附件内容`, "application/octet-stream") if err != nil { fmt.Println("添加附件失败:", err) return } // 发送带有附件的邮件 _, err = emailpp.New(content, configured, true) if err != nil { fmt.Println("发送邮件失败:", err) return } fmt.Println("邮件已发送成功")}6. mailc (Mailc)
简介
mailc 是一个轻量级的邮件发送库,专注于简单而高效地发送邮件。它提供了 API,允许开发者轻松构造邮件内容,并发送给多个收件人。
特点
- 轻量级:相比其他邮件库,
mailc的依赖项非常少,只有几 MB 的 size。 - 快速开发:适合需要快速构建邮件发送功能的项目。
- 支持超文本:可以插入 HTML 轮廓,生成 HTML 邮件。
- 社区支持:在 GitHub 上有活跃的社区,提供了丰富的教程和示例。
使用场景
- 小型项目:如果项目不需要复杂的邮件功能,
mailc是一个不错的选择。 - 快速原型开发:适合用于邮件测试功能的快速原型开发。
安装
package mainimport ( "context" "encoding/json" "email" "fmt")func main() {lesc := &lese{$to: "收件人地址@domain.com", body: `邮件主题`}// 添加附件eq: := &email.QuickEnvelope{ To: "收件人地址@domain.com", Subject: "邮件主题", Body: `邮件正文`, // 添加附件 Attachments: []byte{"附件1", "附件2"}, }// 发送邮件context.Background().QuickSend(&eq).-pill() fmt.Println("邮件已发送成功")}0示例代码
package mainimport ( "context" "encoding/json" "email" "fmt")func main() {lesc := &lese{$to: "收件人地址@domain.com", body: `邮件主题`}// 添加附件eq: := &email.QuickEnvelope{ To: "收件人地址@domain.com", Subject: "邮件主题", Body: `邮件正文`, // 添加附件 Attachments: []byte{"附件1", "附件2"}, }// 发送邮件context.Background().QuickSend(&eq).-pill() fmt.Println("邮件已发送成功")}17. smail
简介
smail 是一个高性能的邮件发送库,专为高并发场景设计。它基于 context 库,并且支持多线程、高可用性和高性能。
特点
- 高性能:适用于高并发邮件发送场景。
- 支持多线程:可以同时处理多个邮件发送请求。
- 高可用性:支持负载均衡和错误重试功能。
- 依赖项较少:只需要依赖
context库。
使用场景
- 高并发邮件应用:需要处理大量邮件发送请求的项目。
- 实时通信工具:例如即时通讯应用(IM),需要快速发送邮件。
- 消息队列集成:需要通过消息队列(如 RabbitMQ)发送邮件的项目。
安装
package mainimport ( "context" "encoding/json" "email" "fmt")func main() {lesc := &lese{$to: "收件人地址@domain.com", body: `邮件主题`}// 添加附件eq: := &email.QuickEnvelope{ To: "收件人地址@domain.com", Subject: "邮件主题", Body: `邮件正文`, // 添加附件 Attachments: []byte{"附件1", "附件2"}, }// 发送邮件context.Background().QuickSend(&eq).-pill() fmt.Println("邮件已发送成功")}2示例代码
package mainimport ( "context" "encoding/json" "email" "fmt")func main() {lesc := &lese{$to: "收件人地址@domain.com", body: `邮件主题`}// 添加附件eq: := &email.QuickEnvelope{ To: "收件人地址@domain.com", Subject: "邮件主题", Body: `邮件正文`, // 添加附件 Attachments: []byte{"附件1", "附件2"}, }// 发送邮件context.Background().QuickSend(&eq).-pill() fmt.Println("邮件已发送成功")}3总结
以上是 Golang 中常用的 7 个发送邮件库的推荐。每个库都有其独特的特点和适用场景,您可以根据项目的需求选择合适的库。


【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务。 查看价格
【AokSend邮件API】:触发式邮件API,15元/万封,99%送达率。 查看价格
【烽火邮箱】:新人领取免费域名邮箱,可用作企业邮箱公司邮箱。 查看价格
