更新库pkg
This commit is contained in:
43
pkg/notice/drive/dingtalk.go
Normal file
43
pkg/notice/drive/dingtalk.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package drive
|
||||
|
||||
import (
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gctx"
|
||||
"github.com/gogf/gf/v2/os/gtime"
|
||||
)
|
||||
|
||||
type DingTalkMod struct {
|
||||
DingTalkWebHook string
|
||||
}
|
||||
|
||||
func DingTalkLoad(webHook string) *DingTalkMod {
|
||||
return &DingTalkMod{
|
||||
DingTalkWebHook: webHook,
|
||||
}
|
||||
}
|
||||
|
||||
func (m DingTalkMod) Send(value string) {
|
||||
ctx := gctx.New()
|
||||
// 从配置中获取发送者名称
|
||||
name, _ := g.Cfg().Get(ctx, "name")
|
||||
|
||||
// 定义钉钉机器人发送消息的URL,其中access_token为固定值
|
||||
url := m.DingTalkWebHook
|
||||
url += "×tamp=" + gtime.Now().TimestampMilliStr()
|
||||
// 使用goroutine异步发送消息
|
||||
|
||||
var post = g.Map{
|
||||
"msgtype": "text",
|
||||
"text": g.Map{
|
||||
"content": "通知姬 " + name.String() + ":\n" + value + "\n" + gtime.Now().String(),
|
||||
},
|
||||
}
|
||||
|
||||
// 构建发送的消息体,包含消息类型和内容
|
||||
_, err := g.Client().Discovery(nil).ContentJson().Post(ctx, url, post)
|
||||
if err != nil {
|
||||
g.Log().Info(ctx, err)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
51
pkg/notice/drive/email.go
Normal file
51
pkg/notice/drive/email.go
Normal file
@@ -0,0 +1,51 @@
|
||||
package drive
|
||||
|
||||
import (
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gctx"
|
||||
"gopkg.in/gomail.v2"
|
||||
)
|
||||
|
||||
type MailMod struct {
|
||||
Host string `json:"host" dc:"邮件服务器地址"`
|
||||
Port int `json:"port" dc:"邮件服务器端口"`
|
||||
User string `json:"user" dc:"邮件服务器用户名"`
|
||||
Pass string `json:"pass" dc:"邮件服务器密码"`
|
||||
From string `json:"from" dc:"邮件发送者"`
|
||||
To string `json:"to" dc:"邮件接收者"`
|
||||
Subject string `json:"subject" dc:"邮件主题"`
|
||||
}
|
||||
|
||||
func MailLoad(Host string, port int, to string, subject string) *MailMod {
|
||||
return &MailMod{
|
||||
Host: Host,
|
||||
Port: port,
|
||||
User: "root",
|
||||
Pass: "root",
|
||||
From: "root",
|
||||
To: to,
|
||||
Subject: subject,
|
||||
}
|
||||
}
|
||||
|
||||
func (m MailMod) Send(value string) {
|
||||
// 创建一个新的消息
|
||||
obj := gomail.NewMessage()
|
||||
// 设置发件人
|
||||
obj.SetHeader("From", m.From)
|
||||
// 设置收件人
|
||||
obj.SetHeader("To", m.To)
|
||||
// 设置邮件主题
|
||||
obj.SetHeader("Subject", m.Subject)
|
||||
// 设置邮件正文
|
||||
obj.SetBody("text/plain", value)
|
||||
|
||||
// 创建 SMTP 拨号器,这里需要提供 SMTP 服务器地址、端口、发件人邮箱和密码
|
||||
d := gomail.NewDialer(m.Host, m.Port, m.User, m.Pass)
|
||||
|
||||
// 发送邮件
|
||||
if err := d.DialAndSend(obj); err != nil {
|
||||
g.Log().Error(gctx.New(), err)
|
||||
}
|
||||
return
|
||||
}
|
||||
20
pkg/notice/notice.go
Normal file
20
pkg/notice/notice.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package notice
|
||||
|
||||
import (
|
||||
v1 "github.com/ayflying/utility_go/api/pgk/v1"
|
||||
"github.com/ayflying/utility_go/pkg/notice/drive"
|
||||
)
|
||||
|
||||
type MessageV1 interface {
|
||||
Send(value string)
|
||||
}
|
||||
|
||||
func New(typ v1.NoticeType, host string, value ...interface{}) MessageV1 {
|
||||
switch typ {
|
||||
case v1.NoticeType_DINGTALK:
|
||||
return drive.DingTalkLoad(host)
|
||||
case v1.NoticeType_EMAIL:
|
||||
return drive.MailLoad(host, value[0].(int), value[1].(string), value[2].(string))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user