email.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package utils
  2. import (
  3. "fmt"
  4. "gopkg.in/gomail.v2"
  5. "mime"
  6. "strconv"
  7. "strings"
  8. )
  9. //发送邮件
  10. func SendEmail(title, content string, touser string) bool {
  11. var arr []string
  12. sub := strings.Index(touser, ";")
  13. if sub >= 0 {
  14. spArr := strings.Split(touser, ";")
  15. for _, v := range spArr {
  16. arr = append(arr, v)
  17. }
  18. } else {
  19. arr = append(arr, touser)
  20. }
  21. mailConn := map[string]string{
  22. "user": "18170239278@163.com",
  23. "pass": "JYWLATLVZJROWMWZ",
  24. "host": "smtp.163.com",
  25. "port": "465",
  26. }
  27. mailPort, _ := strconv.Atoi(mailConn["port"]) //转换端口类型为int
  28. m := gomail.NewMessage()
  29. //m.SetHeader("From", mailConn["user"])
  30. m.SetHeader("From", m.FormatAddress(mailConn["user"], APPNAME)) //这种方式可以添加别名,即“XX官方”
  31. // 说明:如果是用网易邮箱账号发送,以下方法别名可以是中文,如果是qq企业邮箱,以下方法用中文别名,会报错,需要用上面此方法转码
  32. //m.SetHeader("From", "FB Sample"+"<"+mailConn["user"]+">") //这种方式可以添加别名,即“FB Sample”, 也可以直接用<code>m.SetHeader("From",mailConn["user"])</code> 读者可以自行实验下效果
  33. //m.SetHeader("From", mailConn["user"])
  34. m.SetHeader("To", arr...)
  35. m.SetHeader("Subject", title+" "+GetRandString(16))
  36. m.SetBody("text/html", content)
  37. //d := gomail.NewDialer("smtp.qq.com", 587, "317699326@qq.com", "vukbwzijfhclbjij")
  38. d := gomail.NewDialer(mailConn["host"], mailPort, mailConn["user"], mailConn["pass"])
  39. if err := d.DialAndSend(m); err != nil {
  40. fmt.Println("err:", err)
  41. return false
  42. }
  43. return true
  44. }
  45. //发送邮件
  46. func SendEmailByHongze(title, content string, touser, attachPath, attachName string) bool {
  47. var arr []string
  48. sub := strings.Index(touser, ";")
  49. if sub >= 0 {
  50. spArr := strings.Split(touser, ";")
  51. for _, v := range spArr {
  52. arr = append(arr, v)
  53. }
  54. } else {
  55. arr = append(arr, touser)
  56. }
  57. m := gomail.NewMessage()
  58. m.SetHeader("From", "public@hzinsights.com")
  59. m.SetHeader("To", arr...)
  60. m.SetHeader("Subject", title+" "+GetRandStringNoSpecialChar(8))
  61. m.SetBody("text/html", content)
  62. //body := new(bytes.Buffer)
  63. if attachPath != "" {
  64. m.Attach(attachPath,
  65. gomail.Rename(attachName),
  66. gomail.SetHeader(map[string][]string{
  67. "Content-Disposition": {
  68. fmt.Sprintf(`attachment; filename="%s"`, mime.QEncoding.Encode("UTF-8", attachName)),
  69. },
  70. }))
  71. }
  72. d := gomail.NewDialer("smtp.mxhichina.com", 465, "public@hzinsights.com", "Hzinsights2018")
  73. if err := d.DialAndSend(m); err != nil {
  74. fmt.Println("send err:", err.Error())
  75. return false
  76. }
  77. return true
  78. }