email.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package utils
  2. import (
  3. "github.com/sirupsen/logrus"
  4. mail "github.com/xhit/go-simple-mail/v2"
  5. "log"
  6. )
  7. var emailClient = func() *mail.SMTPServer {
  8. // 创建邮件客户端
  9. client := mail.NewSMTPClient()
  10. // 设置SMTP服务器和认证信息
  11. client.Host = "smtp.163.com" // 替换为你的SMTP服务器地址
  12. client.Port = 25 // 替换为SMTP服务器端口
  13. client.Username = "17673481176@163.com" // 替换为SMTP服务器的用户名
  14. client.Password = "kk992471" // 替换为SMTP服务器的密码
  15. return client
  16. }()
  17. func EmailPicture(To, subject, data string, pic *mail.File) {
  18. // 创建邮件客户端
  19. //client := mail.NewSMTPClient()
  20. //// 设置SMTP服务器和认证信息
  21. //client.Host = "smtp.163.com" // 替换为你的SMTP服务器地址
  22. //client.Port = 25 // 替换为SMTP服务器端口
  23. //client.Username = "17673481176@163.com" // 替换为SMTP服务器的用户名
  24. //client.Password = "kk992471" // 替换为SMTP服务器的密码
  25. smtpClient, err := emailClient.Connect()
  26. if err != nil {
  27. logrus.Error("email client Connect err", err)
  28. return
  29. }
  30. // 创建邮件对象
  31. email := mail.NewMSG()
  32. // 设置发件人
  33. email.SetFrom("17673481176@163.com")
  34. // 设置收件人
  35. email.AddTo(To)
  36. // 设置主题
  37. email.SetSubject(subject)
  38. // 设置html文本内容
  39. email.SetBody(mail.TextHTML, data)
  40. // 添加图片附件
  41. if pic != nil {
  42. email.Attach(pic)
  43. }
  44. // 发送邮件
  45. err = email.Send(smtpClient)
  46. if err != nil {
  47. log.Println("116 Failed to send email:", err)
  48. return
  49. }
  50. log.Println("Email sent successfully")
  51. }
  52. //@author: [maplepie](https://github.com/maplepie)
  53. //@function: Email
  54. //@description: Email发送方法
  55. //@param: subject string, body string
  56. //@return: error
  57. func Email(To, subject string, body string) {
  58. smtpClient, err := emailClient.Connect()
  59. if err != nil {
  60. logrus.Error("email client connect err", err)
  61. return
  62. }
  63. // 创建邮件对象
  64. email := mail.NewMSG()
  65. // 设置发件人
  66. email.SetFrom("17673481176@163.com")
  67. // 设置收件人
  68. email.AddTo(To)
  69. // 设置主题
  70. email.SetSubject(subject)
  71. // 设置纯文本内容
  72. email.SetBody(mail.TextHTML, body)
  73. // 发送邮件
  74. err = email.Send(smtpClient)
  75. if err != nil {
  76. log.Println("116 Failed to send email:", err)
  77. return
  78. }
  79. log.Println("Email sent successfully")
  80. }
  81. //@author: [SliverHorn](https://github.com/SliverHorn)
  82. //@function: ErrorToEmail
  83. //@description: 给email中间件错误发送邮件到指定邮箱
  84. //@param: subject string, body string
  85. //@return: error
  86. func ErrorToEmail(subject string, body string) error {
  87. //to := strings.Split(global.GlobalConfig.To, ",")
  88. //if to[len(to)-1] == "" { // 判断切片的最后一个元素是否为空,为空则移除
  89. // to = to[:len(to)-1]
  90. //}
  91. //return send(to, subject, body)
  92. return nil
  93. }
  94. func send(to []string, subject string, body string) error {
  95. //from := global.GlobalConfig.From
  96. //nickname := global.GlobalConfig.Nickname
  97. //secret := global.GlobalConfig.Secret
  98. //host := global.GlobalConfig.Host
  99. //port := global.GlobalConfig.Port
  100. //isSSL := global.GlobalConfig.IsSSL
  101. //
  102. //auth := smtp.PlainAuth("", from, secret, host)
  103. //e := email.NewEmail()
  104. //if nickname != "" {
  105. // e.From = fmt.Sprintf("%s <%s>", nickname, from)
  106. //} else {
  107. // e.From = from
  108. //}
  109. //e.To = to
  110. //e.Subject = subject
  111. //e.HTML = []byte(body)
  112. //var err error
  113. //hostAddr := fmt.Sprintf("%s:%d", host, port)
  114. //if isSSL {
  115. // err = e.SendWithTLS(hostAddr, auth, &tls.Config{ServerName: host})
  116. //} else {
  117. // err = e.Send(hostAddr, auth)
  118. //}
  119. //return err
  120. return nil
  121. }