mail.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package service
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "io/ioutil"
  6. "strconv"
  7. "gopkg.in/gomail.v2"
  8. )
  9. var SMTPMailServiceIstance *SMTPMailService = new(SMTPMailService)
  10. type SMTPMailService struct {
  11. smtpServer string
  12. smtpPort int
  13. smtpUserName string
  14. smtpAuthToken string
  15. }
  16. func (s *SMTPMailService) Init(configPath string) {
  17. configMap := make(map[string]string)
  18. content, err := ioutil.ReadFile(configPath)
  19. if err != nil {
  20. panic(err)
  21. }
  22. err = json.Unmarshal(content, &configMap)
  23. if err != nil {
  24. panic(err)
  25. }
  26. stmpPort, _ := strconv.Atoi(configMap["stmp_port"])
  27. s.smtpServer = configMap["stmp_server"]
  28. s.smtpPort = stmpPort
  29. s.smtpUserName = configMap["stmp_user_name"]
  30. s.smtpAuthToken = configMap["stmp_auth_token"]
  31. }
  32. func (s *SMTPMailService) SendHtmlMail(receiverMail, subject, body string) error {
  33. m := gomail.NewMessage()
  34. //发送人
  35. m.SetHeader("From", s.smtpUserName)
  36. //接收人
  37. m.SetHeader("To", receiverMail)
  38. //抄送人
  39. //m.SetAddressHeader("Cc", "xxx@qq.com", "xiaozhujiao")
  40. //主题
  41. m.SetHeader("Subject", subject)
  42. //内容
  43. m.SetBody("text/html", body)
  44. //拿到token,并进行连接,第4个参数是填授权码
  45. d := gomail.NewDialer(s.smtpServer, s.smtpPort, s.smtpUserName, s.smtpAuthToken)
  46. // 发送邮件
  47. if err := d.DialAndSend(m); err != nil {
  48. fmt.Printf("DialAndSend err %v:", err)
  49. return err
  50. }
  51. fmt.Printf("send mail success\n")
  52. return nil
  53. }