Skip to content

Mail 邮件模块

SMTP 邮件发送器,支持模板和安全特性。

包含内容

  • SMTP 邮件发送
  • HTML 模板
  • 头部注入防护
  • XSS 转义
  • 附件清理
  • 异步队列

快速复制

bash
cp -r registry/mail/src/go/* yourproject/internal/mail/

使用方式

基本发送

go
sender := mail.NewSender(mail.Config{
    Host:     "smtp.example.com",
    Port:     587,
    Username: "user@example.com",
    Password: "password",
    From:     "noreply@example.com",
})

err := sender.Send(mail.Message{
    To:      []string{"user@example.com"},
    Subject: "Welcome",
    Body:    "<h1>Welcome!</h1>",
    IsHTML:  true,
})

使用模板

go
sender := mail.NewSender(mail.Config{
    TemplateDir: "./templates",
})

err := sender.SendTemplate(mail.Message{
    To:      []string{"user@example.com"},
    Subject: "Welcome",
}, "welcome.html", map[string]any{
    "Name": "John",
})

异步队列

go
sender := mail.NewSender(mail.Config{
    QueueSize: 100,
    Workers: 4,
})

// 非阻塞发送
sender.SendAsync(mail.Message{...})

配置

参数描述默认值
HostSMTP 主机必需
PortSMTP 端口必需
UsernameSMTP 用户名必需
PasswordSMTP 密码必需
From发件人地址必需
TemplateDir模板目录
QueueSize异步队列大小0(同步)
Workers异步工作线程1

文件参考

文件用途
sender.go邮件发送器
config.go配置
message.go消息类型
template.go模板引擎

安全特性

  • 头部注入防护
  • 模板 XSS 转义
  • 附件清理
  • 输入验证

测试

bash
cd registry/mail/src/go
go test -v ./...

Released under the MIT License.