server_.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package isapi
  2. import (
  3. "fmt"
  4. mail "github.com/xhit/go-simple-mail/v2"
  5. "log"
  6. )
  7. func SendAlarmEmail(cameraMac string, msg string, file *mail.File) {
  8. var html = `
  9. <!DOCTYPE html>
  10. <html>
  11. <head><title>报警通知</title></head>
  12. <body>
  13. <h5>%s</h5>
  14. <h5><a href="http://192.168.110.69:8889/user/userUnbindEmail?id=%d&email=%s">不再接收龙弛防溺水报警邮箱通知!</a></h5>
  15. </body>
  16. </html>
  17. `
  18. //查出所有相关email
  19. //var emails []UserEmails
  20. //
  21. //for _, v := range emails {
  22. // body := fmt.Sprintf(html, msg, v.Uid, v.Email)
  23. // EmailPicture(v.Email,
  24. // "防溺水通知",
  25. // body,
  26. // file)
  27. //}
  28. body := fmt.Sprintf(html, msg, 1, "1104038181@qq.com")
  29. EmailPicture("1104038181@qq.com",
  30. "防溺水通知",
  31. body,
  32. file)
  33. }
  34. type UserEmails struct {
  35. Uid uint `json:"uid"`
  36. Email string `json:"email"`
  37. }
  38. var emailClient = func() *mail.SMTPServer {
  39. // 创建邮件客户端
  40. client := mail.NewSMTPClient()
  41. // 设置SMTP服务器和认证信息
  42. client.Host = "smtp.163.com" // 替换为你的SMTP服务器地址
  43. client.Port = 25 // 替换为SMTP服务器端口
  44. client.Username = "17673481176@163.com" // 替换为SMTP服务器的用户名
  45. client.Password = "kk992471" // 替换为SMTP服务器的密码
  46. return client
  47. }()
  48. func EmailPicture(To, subject, data string, pic *mail.File) {
  49. // 创建邮件客户端
  50. smtpClient, err := emailClient.Connect()
  51. if err != nil {
  52. return
  53. }
  54. // 创建邮件对象
  55. email := mail.NewMSG()
  56. // 设置发件人
  57. email.SetFrom("17673481176@163.com")
  58. // 设置收件人
  59. email.AddTo(To)
  60. // 设置主题
  61. email.SetSubject(subject)
  62. // 设置html文本内容
  63. email.SetBody(mail.TextHTML, data)
  64. // 添加图片附件
  65. if pic != nil {
  66. email.Attach(pic)
  67. }
  68. // 发送邮件
  69. err = email.Send(smtpClient)
  70. if err != nil {
  71. log.Println("116 Failed to send email:", err)
  72. return
  73. }
  74. log.Println("Email sent successfully")
  75. }