httppostform

This commit is contained in:
jiangyong 2026-08-02 00:04:59 +08:00
parent ec91501a44
commit 6568cc0690
3 changed files with 679 additions and 8 deletions

View File

@ -67,10 +67,21 @@ func (m *Message) SendText(args ...string) error {
} else if len(args) > 4 { } else if len(args) > 4 {
receiver, content, fingerprint, level, count = args[0], args[1], args[2], args[3], args[4] receiver, content, fingerprint, level, count = args[0], args[1], args[2], args[3], args[4]
} }
reqUrl := fmt.Sprintf("%s/admin/message/send?sender=%s&receiver=%s&type=text&fingerprint=%s&count=%s&level=%s&content=%s", m.address, m.sender, receiver, fingerprint, count, level, url.QueryEscape(content))
body, err := util.HttpGet(reqUrl, map[string]string{ // Build form data
formData := url.Values{}
formData.Set("sender", m.sender)
formData.Set("receiver", receiver)
formData.Set("type", "text")
formData.Set("fingerprint", fingerprint)
formData.Set("count", count)
formData.Set("level", level)
formData.Set("content", content)
reqUrl := fmt.Sprintf("%s/admin/message/send", m.address)
body, err := util.HttpPostForm(reqUrl, map[string]string{
"x-token": m.token, "x-token": m.token,
}) }, formData)
if err != nil { if err != nil {
return err return err
} }

View File

@ -8,12 +8,649 @@ import (
func TestMessage_Send(t *testing.T) { func TestMessage_Send(t *testing.T) {
s := NewMessage("http://u.batiao8.com", "", "alarm") s := NewMessage("http://u.batiao8.com", "c39e1c6e-38f7-422c-a7d1-9e05bf65596f", "batiao-mail")
mess := make([]string, 0) mess := make([]string, 0)
mess = append(mess, "加发到") mess = append(mess, `
mess = append(mess, "asdfasdfadfa") <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
mess = append(mess, "@3q452345~!@@#$$%^&*())") "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
err := s.Send("jiangyong", strings.Join(mess, "\n")) <html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<title>八条科技企业服务[2025-02-13]</title>
</head>
<style type="text/css">
body {
color: #333;
font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
}
table {
margin-top: 10px;
border-top: #D9D9D9 solid 2px;
border-bottom: #D9D9D9 solid 1px;
border-collapse: collapse;
}
td {
font-size: 12px;
line-height: 20px;
text-align: center;
}
tr th {
font-size: 12px;
line-height: 20px;
text-align: center;
}
th {
text-align: left;
border-bottom: #D9D9D9 solid 1px;
background-color: rgba(232, 245, 183, 0.95);
}
td,
th {
padding: 0 3px 0 3px;
border-left: #D9D9D9 solid 1px;
border-right: #D9D9D9 solid 1px;
}
td {
border-bottom: #D9D9D9 solid 1px;
background-position: bottom;
background-repeat: repeat-x;
}
img.chart {
border: 0;
margin-top: 10px;
width: 400px;
}
p {
margin: 0
}
#report_title {
font-size: 20px;
font-family: "黑体";
padding-top: 20px;
}
div.title {
font-size: 18px;
font-family: "黑体";
padding: 12px 0 0 0;
width: 1070px;
margin: 15px 0 0 10px;
text-align: left;
}
div.sub_title {
font-size: 16px;
font-family: "黑体";
padding-top: 12px;
width: 1050px;
margin: 0 auto;
text-align: left;
}
td.fail {
margin: 0;
padding: 0;
width: 50%;
}
td.fail table.tb_fail {
margin: 0 auto;
width: 90%;
}
td.fail table.tb_fail tr td {
width: 25%
}
td.fail table.tb_fail tr td.title {
width: 12%
}
td.pub_img {
width: 80px;
padding: 0;
}
td.pub_img img {
margin: 0 auto;
}
table.trend tr td {
width: 33.3%
}
table.delay tr td {
width: 20%
}
table.trend,
table.delay {
margin-top: 0
}
table.tb_qualitiy td {
width: 33.3%
}
table.tb_docnum td {
width: 20%
}
tr.highlight_error {
background-color: rgba(255, 0, 0, 0.4);
}
tr.highlight_warning {
background-color: rgba(255, 255, 0, 0.4);
}
div.comment {
font-size: 14px;
color: red;
font-family: "黑体";
padding-top: 12px;
width: 1050px;
margin: 0 auto;
text-align: left;
}
</style>
<body>
<table width="1070" align="center" style="border: none">
<tbody>
<tr>
<td style="width:1070px;border: none ">
<div id="report_title" align="center">八条科技企业服务[2025-02-13]</div>
<div class="title">鱼办</div>
<div class="sub_title">1.1 汇总统计</div>
<div style="clear:both">
<table width="1070" align="center">
<thead>
<tr align="center">
<th>日期</th>
<th>支付订单</th>
<th>支付金额</th>
<th>平均金额</th>
<th>人均订单</th>
<th>退款数</th>
<th>退款金额</th>
</tr>
</thead>
<tbody>
<tr align="center" class="">
<td> 2025-02-13(星期四)</td>
<td> 6</td>
<td> 2610.93</td>
<td> 435.15</td>
<td> 3</td>
<td> 0</td>
<td> 0</td>
</tr>
<tr align="center" class="">
<td> 2025-02-12(星期三)</td>
<td> 6</td>
<td> 2810.57</td>
<td> 468.42</td>
<td> 3</td>
<td> 0</td>
<td> 0</td>
</tr>
<tr align="center" class="">
<td> 2025-02-11(星期二)</td>
<td> 11</td>
<td> 4551.06</td>
<td> 413.73</td>
<td> 3</td>
<td> 0</td>
<td> 0</td>
</tr>
<tr align="center" class="">
<td> 2025-02-10(星期一)</td>
<td> 9</td>
<td> 3616.72</td>
<td> 401.85</td>
<td> 3</td>
<td> 1</td>
<td> 468.31</td>
</tr>
<tr align="center" class="">
<td> 2025-02-08(星期六)</td>
<td> 0</td>
<td> 0</td>
<td> 0</td>
<td> 0</td>
<td> 1</td>
<td> 368.57</td>
</tr>
<tr align="center" class="">
<td> 2025-02-07(星期五)</td>
<td> 11</td>
<td> 4953.42</td>
<td> 450.31</td>
<td> 2</td>
<td> 0</td>
<td> 0</td>
</tr>
<tr align="center" class="">
<td> 2025-01-27(星期一)</td>
<td> 14</td>
<td> 6256.82</td>
<td> 446.91</td>
<td> 4</td>
<td> 0</td>
<td> 0</td>
</tr>
<tr align="center" class="">
<td> 2025-01-26(星期日)</td>
<td> 5</td>
<td> 2342.94</td>
<td> 468.58</td>
<td> 2</td>
<td> 1</td>
<td> 399.37</td>
</tr>
<tr align="center" class="">
<td> 2025-01-23(星期四)</td>
<td> 0</td>
<td> 0</td>
<td> 0</td>
<td> 0</td>
<td> 1</td>
<td> 368.44</td>
</tr>
<tr align="center" class="">
<td> 2025-01-22(星期三)</td>
<td> 0</td>
<td> 0</td>
<td> 0</td>
<td> 0</td>
<td> 1</td>
<td> 1.24</td>
</tr>
<tr align="center" class="">
<td> 2025-01-18(星期六)</td>
<td> 0</td>
<td> 0</td>
<td> 0</td>
<td> 0</td>
<td> 1</td>
<td> 1.18</td>
</tr>
<tr align="center" class="">
<td> 1970-01-01(星期四)</td>
<td> 1</td>
<td> 468.4</td>
<td> 468.4</td>
<td> 1</td>
<td> 0</td>
<td> 0</td>
</tr>
<tr align="center" class="">
<td> 本月</td>
<td> 43</td>
<td> 18542.7</td>
<td> 431.22</td>
<td> 2</td>
<td> 2</td>
<td> 836.88</td>
</tr>
<tr align="center" class="">
<td> 上月</td>
<td> 19</td>
<td> 8599.76</td>
<td> 452.61</td>
<td> 2</td>
<td> 4</td>
<td> 770.23</td>
</tr>
</tbody>
</table>
</div>
<div class="title">蜀创</div>
<div class="sub_title">2.1 汇总统计</div>
<div style="clear:both">
<table width="1070" align="center">
<thead>
<tr align="center">
<th>日期</th>
<th>支付订单</th>
<th>支付金额</th>
<th>平均金额</th>
<th>人均订单</th>
<th>退款数</th>
<th>退款金额</th>
</tr>
</thead>
<tbody>
<tr align="center" class="">
<td> 2025-02-13(星期四)</td>
<td> 8</td>
<td> 3149.54</td>
<td> 393.69</td>
<td> 2</td>
<td> 3</td>
<td> 1305.68</td>
</tr>
<tr align="center" class="">
<td> 2025-02-12(星期三)</td>
<td> 18</td>
<td> 7333.33</td>
<td> 407.4</td>
<td> 3</td>
<td> 2</td>
<td> 836.79</td>
</tr>
<tr align="center" class="">
<td> 2025-02-11(星期二)</td>
<td> 3</td>
<td> 1305.55</td>
<td> 435.18</td>
<td> 3</td>
<td> 0</td>
<td> 0</td>
</tr>
<tr align="center" class="">
<td> 2025-02-10(星期一)</td>
<td> 2</td>
<td> 736.84</td>
<td> 368.42</td>
<td> 2</td>
<td> 0</td>
<td> 0</td>
</tr>
<tr align="center" class="">
<td> 2025-01-26(星期日)</td>
<td> 0</td>
<td> 0</td>
<td> 0</td>
<td> 0</td>
<td> 1</td>
<td> 450.86</td>
</tr>
<tr align="center" class="">
<td> 2025-01-23(星期四)</td>
<td> 0</td>
<td> 0</td>
<td> 0</td>
<td> 0</td>
<td> 4</td>
<td> 1.27</td>
</tr>
<tr align="center" class="">
<td> 本月</td>
<td> 31</td>
<td> 12525.26</td>
<td> 404.04</td>
<td> 3</td>
<td> 5</td>
<td> 2142.47</td>
</tr>
<tr align="center" class="">
<td> 上月</td>
<td> 0</td>
<td> 0</td>
<td> 0</td>
<td> 0</td>
<td> 5</td>
<td> 452.13</td>
</tr>
</tbody>
</table>
</div>
<br>
</td>
</tr>
</tbody>
</table>
</body>
</html>`)
err := s.Send("jiangyong@batiao8.com", strings.Join(mess, "\n"))
fmt.Println(err) fmt.Println(err)
} }

View File

@ -6,6 +6,8 @@ import (
"fmt" "fmt"
"io" "io"
"net/http" "net/http"
"net/url"
"strings"
"time" "time"
) )
@ -72,6 +74,27 @@ func HttpPutJson(link string, header map[string]string, json []byte) ([]byte, er
return io.ReadAll(resp.Body) return io.ReadAll(resp.Body)
} }
func HttpPostForm(url string, headers map[string]string, data url.Values) ([]byte, error) {
req, err := http.NewRequest("POST", url, strings.NewReader(data.Encode()))
if err != nil {
return nil, err
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
for k, v := range headers {
req.Header.Set(k, v)
}
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
return io.ReadAll(resp.Body)
}
// Get 请求 link请求url // Get 请求 link请求url
func HttpGet(link string, header map[string]string) ([]byte, error) { func HttpGet(link string, header map[string]string) ([]byte, error) {
req, err := http.NewRequest("GET", link, nil) req, err := http.NewRequest("GET", link, nil)