api.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package mail
  2. import (
  3. "fmt"
  4. "log"
  5. "net/smtp"
  6. "strings"
  7. "time"
  8. )
  9. func (mail *MailClient) SendPanicWarning(content string) (err error) {
  10. e := Email{
  11. From: FROM_USERNAME,
  12. PassWord: FROM_PASSWORD,
  13. To: TO_USERNAME,
  14. Subject: "panic",
  15. Content: content,
  16. }
  17. return mail.send(e)
  18. }
  19. func (mail *MailClient) SendCustomWarning(subject, content string) (err error) {
  20. e := Email{
  21. From: FROM_USERNAME,
  22. PassWord: FROM_PASSWORD,
  23. To: TO_USERNAME,
  24. Subject: subject,
  25. Content: content,
  26. }
  27. return mail.send(e)
  28. }
  29. func (mail *MailClient) send(e Email) (err error) {
  30. now := time.Now().Format("2006-01-02 15:04:05")
  31. e.Subject = fmt.Sprintf("Title: %s AppName: %s Env: %s Time: %s", e.Subject, mail.AppName, mail.Env, now)
  32. // 按需要的格式设置邮件内容
  33. message := []byte("From: " + e.From + "\r\n" +
  34. "To: " + e.To + "\r\n" +
  35. "Subject: " + e.Subject + "\r\n" +
  36. "\r\n" +
  37. e.Content)
  38. // 连接到 SMTP 服务器
  39. auth := smtp.PlainAuth("", e.From, e.PassWord, mail.Server)
  40. err = smtp.SendMail(fmt.Sprintf("%s:%s", mail.Server, mail.Port), auth, e.From, strings.Split(e.To, ","), []byte(message))
  41. if err != nil {
  42. log.Println("Email send is failed , Error:", err)
  43. return
  44. }
  45. log.Println("Email send successfully!")
  46. return
  47. }