mail.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package mail
  2. import (
  3. "sync"
  4. "github.com/runningwater/gohub/pkg/config"
  5. )
  6. // To 收件人邮箱列表
  7. type To []string
  8. // From 发件人信息
  9. type From struct {
  10. Address string // 邮箱地址
  11. Name string // 发件人名称(可选)
  12. }
  13. // Email 邮件内容结构
  14. type Email struct {
  15. From From // 发件人
  16. To To // 主送人
  17. Bcc To // 密送人
  18. Cc To // 抄送人
  19. Subject string // 邮件主题
  20. Text []byte // 纯文本正文
  21. HTML []byte // HTML格式正文
  22. Attachments []string // 附件路径列表
  23. }
  24. // Mailer 邮件发送器
  25. type Mailer struct {
  26. Driver Driver // 邮件驱动实现(SMTP/Mailgun等)
  27. }
  28. var once sync.Once
  29. var mailer *Mailer
  30. // NewMailer 创建邮件发送器单例
  31. func NewMailer() *Mailer {
  32. once.Do(func() {
  33. mailer = &Mailer{
  34. Driver: &SMTP{}, // 默认使用 SMTP 驱动
  35. }
  36. })
  37. return mailer
  38. }
  39. // Send 使用配置的驱动发送邮件
  40. // 返回值 bool 表示是否发送成功
  41. func (m *Mailer) Send(email Email) bool {
  42. return m.Driver.Send(email, config.GetStringMapString("mail.smtp"))
  43. }