| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package mail
- // Installation
- // go get github.com/jordan-wright/email
- // Note: Version > 1 of this library requires Go v1.5 or above.
- // If you need compatibility with previous Go versions, you can use the previous package at gopkg.in/jordan-wright/email.v1
- // Sending email using Gmail
- //
- // e := email.NewEmail()
- // e.From = "Jordan Wright <test@gmail.com>"
- // e.To = []string{"test@example.com"}
- // e.Bcc = []string{"test_bcc@example.com"}
- // e.Cc = []string{"test_cc@example.com"}
- // e.Subject = "Awesome Subject"
- // e.Text = []byte("Text Body is, of course, supported!")
- // e.HTML = []byte("<h1>Fancy HTML is supported, too!</h1>")
- // e.Send("smtp.gmail.com:587", smtp.PlainAuth("", "test@gmail.com", "password123", "smtp.gmail.com"))
- import (
- "fmt"
- "net/smtp"
- emailPKG "github.com/jordan-wright/email"
- "github.com/runningwater/gohub/pkg/logger"
- )
- // SMTP 实现 email.Driver 接口
- // 使用 github.com/jordan-wright/email 库实现 SMTP 协议邮件发送
- type SMTP struct{}
- // Send 发送邮件
- // 参数 config 需包含以下配置项:
- //
- // host - SMTP 服务器地址
- // port - SMTP 端口
- // username - 认证用户名
- // password - 认证密码
- //
- // 返回 bool 表示邮件是否成功投递到服务器
- func (s *SMTP) Send(email Email, config map[string]string) bool {
- // 实现发送邮件的逻辑
- e := emailPKG.NewEmail()
- e.From = fmt.Sprintf("%s <%s>", email.From.Name, email.From.Address)
- e.To = email.To
- e.Bcc = email.Bcc
- e.Cc = email.Cc
- e.Subject = email.Subject
- e.Text = email.Text
- e.HTML = email.HTML
- logger.DebugJSON("发送邮件", "发送详情", e)
- if err := e.Send(
- fmt.Sprintf("%v:%v", config["host"], config["port"]),
- smtp.PlainAuth(
- "",
- config["username"],
- config["password"],
- config["host"],
- ),
- ); err != nil {
- logger.ErrorString("发送邮件", "发送邮件失败", err.Error())
- return false
- }
- // 成功时记录简略日志,避免泄露敏感内容
- logger.DebugString("发送邮件", "投递状态", "服务器已接收邮件")
- return true
- }
|