feat(internal/sendMail): 邮件报警

This commit is contained in:
mei
2025-10-06 17:14:54 +08:00
parent bbb726f98a
commit 6c14ad207f
7 changed files with 94 additions and 28 deletions
+56
View File
@@ -0,0 +1,56 @@
package internal
import (
"fmt"
"log"
"github.com/ssdomei232/goodBaby/configs"
"github.com/wneessen/go-mail"
)
func SendMail() {
config, err := configs.GetConfig()
if err != nil {
log.Printf("获取配置文件失败: %v", err)
}
for _, address := range config.MailList {
sendMailMsg(address, config.MailContent)
}
}
func sendMailMsg(address string, msg string) {
config, err := configs.GetConfig()
if err != nil {
log.Printf("获取配置文件失败: %v", err)
}
mailMsg := fmt.Sprintf("Hello,\nThis is a test email sent from Go!%s", msg)
client, err := mail.NewClient(
config.SMTPConfig.Host,
mail.WithPort(config.SMTPConfig.Port),
mail.WithSSL(),
mail.WithUsername(config.SMTPConfig.User),
mail.WithPassword(config.SMTPConfig.Password),
mail.WithSMTPAuth(mail.SMTPAuthPlain),
)
if err != nil {
log.Println(err)
return
}
// 创建邮件
message := mail.NewMsg()
message.From(config.SMTPConfig.User)
message.To(address)
message.Subject(config.MailTitle)
message.SetBodyString(mail.TypeTextPlain, mailMsg)
// 发送邮件
if err := client.DialAndSend(message); err != nil {
log.Println(err)
return
}
fmt.Println("Email sent successfully!")
}
+5 -5
View File
@@ -12,26 +12,26 @@ import (
"github.com/ssdomei232/goodBaby/configs"
)
func SendQQMsg() {
func SendQQ() {
config, err := configs.GetConfig()
if err != nil {
log.Printf("获取配置文件失败: %v", err)
}
url := fmt.Sprintf("%s/%s", config.CatBotUrl, config.CatBotKey)
url := fmt.Sprintf("%s/?secret=%s", config.CatBotUrl, config.CatBotKey)
for _, groupId := range config.QQSendGroup {
sendMsg(url, groupId, config.QQMsg)
sendQQMsg(url, groupId, config.QQMsg)
}
}
func sendMsg(url string, groupId int, msg string) {
func sendQQMsg(url string, groupId int, msg string) {
method := "POST"
payload := &bytes.Buffer{}
writer := multipart.NewWriter(payload)
_ = writer.WriteField("group_id", strconv.Itoa(groupId))
_ = writer.WriteField("message", msg)
_ = writer.WriteField("message", msg) //TODO: 发送死亡区间
err := writer.Close()
if err != nil {
log.Println(err)