简介
email 是一个用 Go 语言编写的轻量级邮件发送库。它的设计简洁,支持 SMTP 协议发送电子邮件,适合需要在应用中集成简单邮件功能的开发者。该库允许我们方便地构建、发送和格式化邮件,支持文本和 HTML 邮件、附件、图片嵌入等功能。
主要特点
• 构建简单:提供了一套直观的 API,可以轻松配置邮件内容、收件人、发件人等。
• 支持附件:可以添加多个附件。
• 文本和 HTML 内容:支持纯文本和 HTML 格式的邮件内容。
• 图片嵌入:支持在邮件内容中嵌入图片等资源文件。
基本安装
首先,我们需要安装这个库:
go get github.com/jordan-wright/email
然后在项目中引入:
import "github.com/jordan-wright/email"
快速开始
下面是一个快速发送邮件的示例。我们将配置 SMTP 信息、收件人、发件人,并发送一封简单的电子邮件。
示例代码
package main
import (
"log"
"net/smtp"
"github.com/jordan-wright/email"
)
func main() {
e := email.NewEmail()
e.From = "Sender Name <sender@example.com>"
e.To = []string{"recipient@example.com"}
e.Subject = "Hello from Go!"
e.Text = []byte("This is a plain text email.")
e.HTML = []byte("<h1>This is an HTML email</h1>")
// 使用 SMTP 服务器发送邮件
err := e.Send("smtp.example.com:587", smtp.PlainAuth("", "user@example.com", "password", "smtp.example.com"))
if err != nil {
log.Fatal(err)
}
log.Println("Email sent successfully!")
}
详细使用说明
1. 设置邮件信息
• From:发件人地址,格式可以为 “Name email@example.com”。
• To:收件人地址列表,可以添加多个收件人。
• Cc/Bcc:设置抄送和密送地址列表。
• Subject:邮件主题。
• Text:纯文本邮件内容。
• HTML:HTML 格式的邮件内容。
2. 添加附件
使用 AttachFile 方法可以添加附件:
e := email.NewEmail()
e.Subject = "Sending an email with attachment"
e.Text = []byte("This email contains an attachment.")
err := e.AttachFile("path/to/your/file.pdf")
if err != nil {
log.Fatal(err)
}
3. 图片嵌入
可以使用 EmbedFile 方法将图片嵌入邮件内容中:
e := email.NewEmail()
e.HTML = []byte(`<html><body><h1>Email with an embedded image</h1><img src="cid:imageID"></body></html>`)
// 嵌入图片,指定 CID(内容 ID)为 "imageID"
_, err := e.EmbedFile("path/to/image.jpg")
if err != nil {
log.Fatal(err)
}
4. 自定义 SMTP 发送
使用 Send 方法发送邮件时可以传入 SMTP 配置信息:
e.Send("smtp.example.com:587", smtp.PlainAuth("", "username", "password", "smtp.example.com"))
5. 使用自定义发送器
如果需要使用自定义 SMTP 配置,可以使用 SendWithTLS:
import "github.com/go-gomail/gomail"
d := gomail.NewDialer("smtp.example.com", 587, "username", "password")
e.SendWithTLS("smtp.example.com:587", d.TLSConfig)
优缺点分析
优点
• 简单易用:API 设计非常简洁,支持快速集成。
• 功能齐全:支持常见的邮件需求,如附件、HTML 内容、图片嵌入等。
• 轻量级:代码量少,依赖少,易于集成到项目中。
缺点
• SMTP 支持有限:主要依赖 SMTP 协议,复杂邮件需求可能需要额外处理。
• 容错性有限:在邮件内容拼接和发送过程中,需要开发者确保字段和格式的正确性。
适用场景
• 小型应用:适合中小型应用的邮件发送需求。
• 开发和测试:可用于开发环境或测试场景,快速集成邮件通知功能。
• 基础邮件需求:例如用户注册确认、通知邮件、简易提醒等功能。
总结
jordan-wright/email 是一个非常实用的 Go 语言邮件发送库,尤其适合希望快速集成邮件功能的开发者。它提供了丰富的邮件格式支持和附件功能,同时保持了简洁的设计,能够轻松满足大多数邮件发送需求。