diff --git a/wechatbot/bootstrap/bootstrap.go b/wechatbot/bootstrap/bootstrap.go index bd59cd1..b7ea463 100644 --- a/wechatbot/bootstrap/bootstrap.go +++ b/wechatbot/bootstrap/bootstrap.go @@ -4,6 +4,7 @@ import ( "log" "github.com/bujnlc8/wechatbot/handlers" + "github.com/bujnlc8/wechatbot/utils" "github.com/eatmoreapple/openwechat" ) @@ -27,5 +28,7 @@ func Run() { } } // 阻塞主goroutine, 直到发生异常或者用户主动退出 - bot.Block() + if err := bot.Block(); err != nil { + utils.SendSimpleEmail("[!]wechatbot异常退出", err.Error()) + } } diff --git a/wechatbot/utils/send_mail.go b/wechatbot/utils/send_mail.go new file mode 100644 index 0000000..a4e57a5 --- /dev/null +++ b/wechatbot/utils/send_mail.go @@ -0,0 +1,37 @@ +package utils + +import ( + "log" + "net/smtp" + "os" +) + +const ( + SMTP_SERVER = "smtp.qq.com" + SMTP_PORT = "587" +) + +// 用qq邮箱发送邮件,从New Bing写的代码修改而来 +func SendSimpleEmail(subject string, body string) { + sender := os.Getenv("EMAIL_SENDER") + passwd := os.Getenv("EMAIL_PASSWD") + recipient := os.Getenv("EMAIL_RECIPIENT") + if len(recipient) == 0 { + recipient = sender + } + auth := smtp.PlainAuth("", sender, passwd, SMTP_SERVER) + header := make(map[string]string) + header["To"] = recipient + header["From"] = sender + header["Subject"] = subject + headerStr := "" + for k, v := range header { + headerStr += k + ": " + v + "\r\n" + } + message := headerStr + "\r\n\r\n" + body + err := smtp.SendMail(SMTP_SERVER+":"+SMTP_PORT, auth, sender, []string{recipient}, []byte(message)) + if err != nil { + log.Fatal(err) + } + log.Println("Email sent successfully") +}