email.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package services
  2. import (
  3. "errors"
  4. "gopkg.in/gomail.v2"
  5. "hongze/hongze_yb_en_api/models/msg_code"
  6. "hongze/hongze_yb_en_api/utils"
  7. "strings"
  8. "time"
  9. )
  10. // SendEmailCode 发送邮件
  11. func SendEmailCode(email string) (err error, errMsg string) {
  12. if email == "" {
  13. err = errors.New("请输入邮箱地址")
  14. return
  15. }
  16. if !utils.ValidateEmailFormatat(email) {
  17. err = errors.New("邮箱格式错误,请重新输入")
  18. return
  19. }
  20. msgCode := utils.GetRandDigit(4)
  21. content := "尊敬的用户:</br>您好,感谢您使用弘则研究,您正在进行邮箱验证,本次请求的验证码为:" + msgCode + "(为了保障您账号的安全性,请在15分钟内完成验证。)</br>弘则研究团队 </br>" + time.Now().Format(utils.FormatDateCN)
  22. title := "弘则研究登陆验证"
  23. //发送邮件
  24. result, err := SendEmailByHz(title, content, email)
  25. if result {
  26. item := &msg_code.MsgCode{
  27. Mobile: email,
  28. Code: msgCode,
  29. ExpiredIn: time.Now().Add(15 * time.Minute).Unix(),
  30. Enabled: 1,
  31. CreatedTime: time.Time{},
  32. LastUpdatedTime: time.Time{},
  33. }
  34. err = item.Create()
  35. } else {
  36. err = errors.New("发送失败")
  37. }
  38. return
  39. }
  40. //发送邮件
  41. func SendEmailByHz(title, content string, touser string) (result bool, err error) {
  42. var arr []string
  43. sub := strings.Index(touser, ";")
  44. if sub >= 0 {
  45. spArr := strings.Split(touser, ";")
  46. for _, v := range spArr {
  47. arr = append(arr, v)
  48. }
  49. } else {
  50. arr = append(arr, touser)
  51. }
  52. m := gomail.NewMessage()
  53. m.SetHeader("From", "public@hzinsights.com")
  54. m.SetHeader("To", arr...)
  55. m.SetHeader("Subject", title)
  56. m.SetBody("text/html", content)
  57. d := gomail.NewDialer("smtp.mxhichina.com", 465, "public@hzinsights.com", "Hzinsights2018")
  58. if err := d.DialAndSend(m); err != nil {
  59. result = false
  60. return result, err
  61. }
  62. result = true
  63. return
  64. }