package mail import ( "sync" "github.com/runningwater/gohub/pkg/config" ) // To 收件人邮箱列表 type To []string // From 发件人信息 type From struct { Address string // 邮箱地址 Name string // 发件人名称(可选) } // Email 邮件内容结构 type Email struct { From From // 发件人 To To // 主送人 Bcc To // 密送人 Cc To // 抄送人 Subject string // 邮件主题 Text []byte // 纯文本正文 HTML []byte // HTML格式正文 Attachments []string // 附件路径列表 } // Mailer 邮件发送器 type Mailer struct { Driver Driver // 邮件驱动实现(SMTP/Mailgun等) } var once sync.Once var mailer *Mailer // NewMailer 创建邮件发送器单例 func NewMailer() *Mailer { once.Do(func() { mailer = &Mailer{ Driver: &SMTP{}, // 默认使用 SMTP 驱动 } }) return mailer } // Send 使用配置的驱动发送邮件 // 返回值 bool 表示是否发送成功 func (m *Mailer) Send(email Email) bool { return m.Driver.Send(email, config.GetStringMapString("mail.smtp")) }