文章首发于:clawhub.club
简单的画了个架构图:
- 发送邮件
- 记录mongo
- 日志系统
- 配置文件读取
- REST服务
- vendor包管理
项目代码结构
比较简单的项目结构。
技术核心:发送邮件
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| func Send(subject, toAddress, toName, body string) error { m := gomail.NewMessage() m.SetAddressHeader("From", "clawhub@163.com", "ClawHub") m.SetAddressHeader("To", toAddress, toName) m.SetHeader("Subject", subject) m.SetBody("text/html", body)
d := gomail.NewDialer(EMailSetting.Host, EMailSetting.Port, EMailSetting.Username, EMailSetting.Password) d.TLSConfig = &tls.Config{InsecureSkipVerify: true} if err := d.DialAndSend(m); err != nil { return err } return nil }
|
业务核心:发送邮件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| func (m *Mail) Send() { err := mail.Send(m.Subject, m.ToAddress, m.ToName, m.Body) if err != nil { m.Res = err.Error() logging.AppLogger.Error("send mail fail", zap.Error(err)) } collection := gmongo.Client.Database("email").Collection("email") _, err = collection.InsertOne(gmongo.GetContext(), m) if err != nil { logging.AppLogger.Error("insert mongo mail fail", zap.Error(err)) } }
|
github地址
发现了一个bug,循环依赖的问题,log使用了set,set使用了log,还是以set为主,先启动吧。