api.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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) SendErrorWarning(err error) error {
  30. e := Email{
  31. From: FROM_USERNAME,
  32. PassWord: FROM_PASSWORD,
  33. To: TO_USERNAME,
  34. Subject: "error",
  35. Content: err.Error(),
  36. }
  37. return mail.send(e)
  38. }
  39. func (mail *MailClient) send(e Email) (err error) {
  40. now := time.Now().Format("2006-01-02 15:04:05")
  41. e.Subject = fmt.Sprintf("Title: %s AppName: %s Mode: %s Time: %s", e.Subject, mail.AppName, mail.Mode, now)
  42. // 按需要的格式设置邮件内容
  43. message := []byte("From: " + e.From + "\r\n" +
  44. "To: " + e.To + "\r\n" +
  45. "Subject: " + e.Subject + "\r\n" +
  46. "\r\n" +
  47. e.Content)
  48. // 连接到 SMTP 服务器
  49. auth := smtp.PlainAuth("", e.From, e.PassWord, mail.Server)
  50. err = smtp.SendMail(fmt.Sprintf("%s:%s", mail.Server, mail.Port), auth, e.From, strings.Split(e.To, ","), []byte(message))
  51. if err != nil {
  52. log.Println("Email send is failed , Error:", err)
  53. return
  54. }
  55. log.Println("Email send successfully!")
  56. return
  57. }