# go **Repository Path**: Xi_Tong/go-language-practice ## Basic Information - **Project Name**: go - **Description**: 一些自己写的go工具 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2025-02-21 - **Last Updated**: 2025-12-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: Go语言 ## README # Push 消息推送工具 ## 一、项目简介 Push 是一个多功能消息推送工具,支持邮件、钉钉、短信等多种消息推送方式,并且可以在推送前后执行自定义命令。它通过读取配置文件`config.yaml`来获取各种推送渠道的配置信息,实现灵活的消息推送功能。 ## 二、功能特性 1. **多种推送渠道**:支持邮件、钉钉、短信(通过 SGIP 协议或自定义命令)推送消息。 2. **灵活配置**:通过`config.yaml`文件配置各个推送渠道的参数,如邮件的发件人、收件人、SMTP 服务器信息,钉钉的 Webhook URL 和密钥,短信的 SGIP 服务器信息等。 3. **推送前后执行命令**:可以在推送消息之前和之后执行自定义命令,方便进行一些前置和后置操作。 4. **日志记录**:记录推送过程中的关键信息和错误信息到日志文件,便于排查问题。 ## 三、安装与配置 1. 获取代码: - **Gitee**:`git clone https://gitee.com/Xi_Tong/go-language-practice.git` 2. 配置文件: - 项目根目录下的`config.yaml`文件包含了所有推送渠道的配置信息。 - 邮件配置: ```yaml Mail: SenderEmail: "发件人邮箱" SenderPassword: "发件人邮箱密码" SmtpServer: "SMTP服务器地址:端口" ReceiverEmail: "收件人邮箱" Subject: "邮件主题" Body: "邮件正文" CcEmails: ["抄送邮箱1", "抄送邮箱2"] ``` - 钉钉配置: ```yaml DingDing: WebhookURL: "钉钉Webhook地址" Secret: "钉钉签名密钥" Message: "钉钉消息内容" ``` - 短信配置: ```yaml SMS: Type: 0 # 0:使用自身参数发送,1:调用文件发送 Command: [] # 当Type为1时,执行的命令 Sgip: LoginName: "SGIP登录名" LoginPassword: "SGIP登录密码" SmgIpPort: "SGIP服务器地址:端口" SPNumber: "SP号码" ChargeNumber: "计费号码" UserNumber: ["接收短信的号码1", "接收短信的号码2"] CorpID: "企业ID" ServiceType: "服务类型" Message: "短信内容" ``` - 其他配置 ```yaml ContentS: Type: 0 # 0:使用配置文件中的内容,1:读取文件内容,2:使用固定内容 File: "文件路径" # 当Type为1时,读取的文件路径 Content: "固定内容" # 当Type为2时,使用的固定内容 Status: Mail: 1 # 1:开启邮件推送,0:关闭 DingDing: 1 # 1:开启钉钉推送,0:关闭 SMS: 1 # 1:开启短信推送,0:关闭 BeforeAndAfterCommands: BeforeStatus: 1 # 1:推送前执行命令,0:不执行 BeforeStatusCommand: [] # 推送前执行的命令 AfterStatus: 1 # 1:推送后执行命令,0:不执行 AfterCommand: [] # 推送后执行的命令 LogGer: LogFile: "log.txt" # 日志文件路径 ``` 3. 依赖安装: - 确保你已经安装了 Go 环境(可打包执行)。 - 项目依赖的包会在编译时自动下载,无需手动安装。 ## 四、使用方法 1. **修改配置文件**:根据需要修改配置文件 2. **编译运行**:在项目根目录下执行`go build`命令编译项目,生成可执行文件。然后运行生成的可执行文件,即可按照配置文件的设置进行消息推送。 3. **命令行参数**:`go run main.go`,目前项目未使用命令行参数,如果后续添加相关功能,将在此说明。 ## 五、项目结构 ```plaintext Push/ ├── config/ │ ├── ReadConfig.go # 配置文件读取和解析相关代码 | └── config.yaml # 配置文件 ├── src/ │ ├── SMS/ │ │ ├── sms.go # 短信发送相关代码,包括命令执行和SGIP协议实现 │ │ └── sgip.go # SGIP协议具体实现 │ ├── dingding/ │ │ └── dingding.go # 钉钉消息发送代码 │ └── mail/ │ └── mail.go # 邮件发送代码 ├── util/ │ └── Logger.go # 工具函数,如日志记录相关代码 ├── scripts/ # 存放一些脚本供程序调用 ├── data/ # 数据文件供程序调用 │ └── output.txt ├── logs/ │ └── log.txt # 日志文件 └── main.go # 项目入口文件 ``` ## 六、贡献指南 1. **代码规范**:遵循 Go 语言的代码规范,代码风格保持一致。 2. 提交流程 : - Fork 本仓库到自己的账号下。 - 在自己的仓库中创建新分支,进行代码修改和功能添加。 - 确保代码通过测试,并且功能正常。 - 提交代码到自己的仓库,并向本仓库的主分支发起 Pull Request。 - 在 Pull Request 中详细说明修改的内容和目的。 ## 七、联系方式 如果你在使用过程中遇到问题或有任何建议,欢迎通过以下方式联系我们: - **邮箱**:2751799737@qq.com