1 Star 0 Fork 0

会飞的鱼/工具集

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
mail.go 2.02 KB
一键复制 编辑 原始数据 按行查看 历史
huibokun 提交于 1年前 . 更新日志调用
package mail
import (
"gitee.com/progress_dream/utools/idhelper"
"gitee.com/progress_dream/utools/logger"
"gitee.com/progress_dream/utools/timehelper"
"gopkg.in/gomail.v2"
)
type Store struct {
sendCh chan MailItem
}
func NewStore() *Store {
return &Store{
sendCh: make(chan MailItem, 100),
}
}
func (s *Store) Start() {
for mailItem := range s.sendCh {
s.sendMailItem(mailItem)
}
}
func (s *Store) sendMailItem(mailItem MailItem) {
mailMess := gomail.NewMessage()
mailMess.SetHeader("From", mailItem.From)
mailMess.SetHeader("To", mailItem.To...)
mailMess.SetHeader("Subject", mailItem.Subject)
mailMess.SetBody("text/html", mailItem.Body)
dialer := gomail.NewDialer(mailItem.sender.host, mailItem.sender.port,
mailItem.sender.username, mailItem.sender.password)
err := dialer.DialAndSend(mailMess)
if err != nil {
logger.Error("send mail error", err, mailItem, dialer)
}
}
func (s *Store) SendMail(from string, to []string, subject, body string, sender MailSender) uint64 {
mailItem := NewMailItem(from, to, subject, body, sender)
s.addMailItem(mailItem)
return mailItem.Id
}
func (s *Store) addMailItem(mailItem MailItem) {
s.sendCh <- mailItem
}
type MailSender struct {
host string
port int
username string
password string
}
func NewMailSender(host string, port int, username, password string) MailSender {
return MailSender{
host: host,
port: port,
username: username,
password: password,
}
}
type MailItem struct {
From string `json:"from,omitempty"`
To []string `json:"to,omitempty"`
Subject string `json:"subject,omitempty"`
Body string `json:"body,omitempty"`
Id uint64 `json:"id,omitempty"`
t int64
sender MailSender
}
func NewMailItem(from string, to []string, subject, body string, sender MailSender) MailItem {
return MailItem{
Id: idhelper.NextId(),
From: from,
To: to,
Subject: subject,
Body: body,
t: timehelper.ServerNowSeconds(),
sender: sender,
}
}
func (m MailItem) GetMailTime() int64 {
return m.t
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/progress_dream/utools.git
git@gitee.com:progress_dream/utools.git
progress_dream
utools
工具集
b952f1b5e8d9

搜索帮助