Golang 开源库分享:email - 简化电子邮件发送

589 阅读3分钟

GitHub 仓库链接

简介

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 语言邮件发送库,尤其适合希望快速集成邮件功能的开发者。它提供了丰富的邮件格式支持和附件功能,同时保持了简洁的设计,能够轻松满足大多数邮件发送需求。

qrcode_for_gh_576cb761d457_258.jpg