Skip to content

Commit a17d4fa

Browse files
committed
fixed get xshell download url
1 parent 827d4c5 commit a17d4fa

File tree

5 files changed

+192
-63
lines changed

5 files changed

+192
-63
lines changed

reptile/Netsarang.go

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,16 +64,20 @@ func GetInfoUrl(product string) (string, error) {
6464

6565
// NetsarangGetMail 获取可用mail
6666
func NetsarangGetMail() (string, error) {
67-
prefix := utils.RandomLowercaseAlphanumeric(9)
67+
/*prefix := utils.RandomLowercaseAlphanumeric(9)
6868
suffix, err := LinShiYouXiangSuffix()
6969
if err != nil {
7070
return "", err
7171
}
7272
_, err = LinShiYouXiangApply(prefix)
73+
if err != nil {
74+
return "", err
75+
}*/
76+
mailUser, err := GetSecmailUser()
7377
if err != nil {
7478
return "", err
7579
}
76-
mail := prefix + suffix
80+
mail := mailUser[0] + "@" + mailUser[1]
7781
log.Println("邮箱号:", mail)
7882
return mail, nil
7983
}
@@ -111,10 +115,11 @@ func NetsarangGetInfo(mail, product string) (string, error) {
111115
if err != nil {
112116
return "", err
113117
}
114-
prefix := strings.Split(mail, "@")[0]
118+
//prefix := strings.Split(mail, "@")[0]
115119

116120
time.Sleep(10 * time.Second)
117-
mailList, err := LinShiYouXiangList(prefix)
121+
//mailList, err := LinShiYouXiangList(prefix)
122+
mailList, err := GetSecmailList()
118123
if err != nil {
119124
return "", err
120125
}
@@ -123,29 +128,36 @@ func NetsarangGetInfo(mail, product string) (string, error) {
123128
break
124129
}
125130
time.Sleep(10 * time.Second)
126-
mailList, err = LinShiYouXiangList(prefix)
131+
//mailList, err = LinShiYouXiangList(prefix)
132+
mailList, err = GetSecmailList()
127133
if err != nil {
128134
return "", err
129135
}
130136
}
131137
if len(mailList) == 0 {
132138
return "", errors.New("没有邮件")
133139
}
134-
mailId := mailList[len(mailList)-1]["id"].(string)
140+
//mailId := mailList[len(mailList)-1]["id"].(string)
141+
mailId, err := GetSecmailLatestId(mailList)
142+
if err != nil {
143+
return "", err
144+
}
135145
if mailId == "" {
136146
return "", errors.New("邮件ID不存在")
137147
}
138148
// 获取最新一封邮件
139-
msg, err := LinShiYouXiangGetMail(prefix, mailId)
149+
/*msg, err := LinShiYouXiangGetMail(prefix, mailId)
140150
if err != nil {
141151
return "", err
142152
}
143-
htmlText, err := DecodeMail(msg)
153+
htmlText, err := DecodeMail(msg)*/
154+
msg, err := GetSecmailMessage(mailId)
144155
if err != nil {
145156
return "", err
146157
}
158+
htmlText := msg["body"].(string)
147159
// 解析HTML
148-
doc, err := goquery.NewDocumentFromReader(bytes.NewReader(htmlText))
160+
doc, err := goquery.NewDocumentFromReader(bytes.NewReader([]byte(htmlText)))
149161
if err != nil {
150162
return "", err
151163
}

reptile/mail.go

Lines changed: 65 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,14 @@ package reptile
1414

1515
import (
1616
"encoding/base64"
17+
"encoding/json"
1718
"errors"
1819
"github.com/antchfx/htmlquery"
1920
"github.com/chromedp/cdproto/page"
2021
"github.com/chromedp/chromedp"
22+
"log"
2123
"math"
24+
"math/big"
2225
"net/http"
2326
"net/mail"
2427
"strings"
@@ -41,6 +44,65 @@ func DecodeMail(msg *mail.Message) ([]byte, error) {
4144
return nil, errors.New("解码方式错误:" + encoding)
4245
}
4346

47+
const secmail1 = "https://www.1secmail.com/api/v1/"
48+
49+
var mailUser []string
50+
51+
// GetSecmailUser 获取一次性邮箱
52+
func GetSecmailUser() ([]string, error) {
53+
if len(mailUser) == 0 || mailUser == nil {
54+
// 获取邮箱
55+
res, err := utils.HttpReadBodyString(http.MethodGet, secmail1+"?action=genRandomMailbox&count=1", "",
56+
nil, nil)
57+
if err != nil {
58+
return nil, err
59+
}
60+
var data []interface{}
61+
err = json.Unmarshal([]byte(res), &data)
62+
mailUser = strings.Split(data[0].(string), "@") // 获取用户名和域名
63+
}
64+
return mailUser, nil
65+
}
66+
67+
// GetSecmailList 获取邮件列表
68+
func GetSecmailList() ([]map[string]interface{}, error) {
69+
mailListUrl := secmail1 + "?action=getMessages&login=" + mailUser[0] + "&domain=" + mailUser[1]
70+
// 获取邮件列表
71+
return utils.HttpReadBodyJsonMapArray(http.MethodGet, mailListUrl, "", nil, nil)
72+
}
73+
74+
// GetSecmailLatestId 获取最新一封邮件ID
75+
func GetSecmailLatestId(mailList []map[string]interface{}) (string, error) {
76+
if mailList == nil || len(mailList) == 0 {
77+
// 获取邮件列表
78+
mailList, err := GetSecmailList()
79+
if err != nil {
80+
return "", err
81+
}
82+
log.Println(mailList, err, mailUser)
83+
}
84+
if len(mailList) == 0 {
85+
return "", errors.New("没有邮件")
86+
}
87+
// 科学计数法转换string数字
88+
newNum := big.NewRat(1, 1)
89+
newNum.SetFloat64(mailList[0]["id"].(float64))
90+
id := newNum.FloatString(0)
91+
return id, nil
92+
}
93+
94+
// GetSecmailMessage 获取邮件内容
95+
func GetSecmailMessage(id string) (map[string]interface{}, error) {
96+
mailMessageUrl := secmail1 + "?action=readMessage&login=" + mailUser[0] + "&domain=" + mailUser[1] + "&id=" + id
97+
// 获取邮件内容
98+
message, err := utils.HttpReadBodyJsonMap(http.MethodGet, mailMessageUrl, "", nil, nil)
99+
if err != nil {
100+
return nil, err
101+
}
102+
//log.Println(message, err, mailUser)
103+
return message, err
104+
}
105+
44106
const LinShiYouXiang = "https://www.linshiyouxiang.net"
45107

46108
// LinShiYouXiangSuffix 获取邮箱号后缀
@@ -75,14 +137,15 @@ func LinShiYouXiangApply(prefix string) (map[string]interface{}, error) {
75137
"mailbox": prefix,
76138
"_ts": utils.ToString(math.Round(float64(time.Now().Unix() / 1000))),
77139
}
78-
return utils.HttpReadBodyJsonMap(http.MethodGet, url, "", param, nil)
140+
r, e := utils.HttpReadBodyJsonMap(http.MethodGet, url, "", param, nil)
141+
return r, e
79142
}
80143

81144
// LinShiYouXiangList 获取邮件列表
82145
// prefix: 邮箱前缀
83146
func LinShiYouXiangList(prefix string) ([]map[string]interface{}, error) {
84147
url := LinShiYouXiang + "/api/v1/mailbox/" + prefix
85-
return utils.HttpReadBodyJsonArray(http.MethodGet, url, "", nil, nil)
148+
return utils.HttpReadBodyJsonMapArray(http.MethodGet, url, "", nil, nil)
86149
}
87150

88151
// LinShiYouXiangGetMail 获取邮件内容

reptile/mail_test.go

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package reptile
2+
3+
import (
4+
"bytes"
5+
"fmt"
6+
"github.com/chromedp/chromedp"
7+
"log"
8+
"math/big"
9+
"net/http"
10+
"net/mail"
11+
"strings"
12+
"testing"
13+
"tool-gin/utils"
14+
)
15+
16+
// https://pkg.go.dev/net/mail#ReadMessage
17+
func TestMail(t *testing.T) {
18+
msg := "Received: from a27-154.smtp-out.us-west-2.amazonses.com ([54.240.27.154]) by temporary-mail.net\n for <yikxcsuka@meantinc.com>; Wed, 21 Apr 2021 13:29:21 +0800 (CST)\nDKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple;\n\ts=n6yk34xlzntpmtevqgs5ghp2jksprvft; d=netsarang.com; t=1618982959;\n\th=Date:To:From:Reply-To:Subject:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding;\n\tbh=OsRfLaUS97/+yRoJ/BSpIARvBe+S33pKrzp1it7xCyQ=;\n\tb=LTblU9qEhTeorpht/julhD6ar7a6MDmEI9zH3TBy28KI6ah7Q+E1J0fAML2Pbcd0\n\tqX/68C8+vtGD03BGEzVPjJTJDoztO0qoNz5l7C/DSGV1MEyxh8ccQtW7rw+7+kQXv/+\n\tBKztqxpwXMjNuzZb3E0W1GYju0kr4qT5nXkMXD5o=\nDKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple;\n\ts=7v7vs6w47njt4pimodk5mmttbegzsi6n; d=amazonses.com; t=1618982959;\n\th=Date:To:From:Reply-To:Subject:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Feedback-ID;\n\tbh=OsRfLaUS97/+yRoJ/BSpIARvBe+S33pKrzp1it7xCyQ=;\n\tb=NhCoNeJCoIpySzLuSxUV5P0zlsh4pLKUz5bhIG3spGhLgW0Pzf/1ZHyJJOTL9T3C\n\tDi7ChUyfnWdRjWSp+7EiA4VNrqGtOzoOsMZKipURghknjlG8bYjpCpdGXrO1D5IBlIj\n\tCl8sZevNShTh++kQW27S4S83cuDhbwxGEgxhSy3k=\nDate: Wed, 21 Apr 2021 05:29:19 +0000\nTo: yikxcsuka@meantinc.com\nFrom: \"NetSarang, Inc.\" <no-reply@netsarang.com>\nReply-To: no-reply@netsarang.com\nSubject: Xshell 7 download instruction\nMessage-ID: <01010178f2e77a87-c9bb10f6-ef08-4dad-ba57-4524546de5d2-000000@us-west-2.amazonses.com>\nX-Mailer: PHPMailer 5.2.10 (https://github.com/PHPMailer/PHPMailer/)\nMIME-Version: 1.0\nContent-Type: text/html; charset=utf-8\nContent-Transfer-Encoding: base64\nFeedback-ID: 1.us-west-2.l7ekw14vD6Jumpwas0GHbg0O54ld7FbCklw8tqJLu88=:AmazonSES\nX-SES-Outgoing: 2021.04.21-54.240.27.154\n\nPHNwYW4+RGVhciB1c2VyLDwvc3Bhbj4NCjxiciAvPjxiciAvPg0KPHNwYW4+VGhhbmsgeW91IGZv\nciB5b3VyIGludGVyZXN0IGluIFhzaGVsbCA3LiBXZSBoYXZlIHByZXBhcmVkIHlvdXIgZXZhbHVh\ndGlvbiBwYWNrYWdlLiBJZiB5b3UgZGlkIG5vdCByZXF1ZXN0IGFuIGV2YWx1YXRpb24gb2YgWHNo\nZWxsIDcsIHBsZWFzZSBjb250YWN0IG91ciBzdXBwb3J0IHRlYW0gYXQgc3VwcG9ydEBuZXRzYXJh\nbmcuY29tIHRvIGhhdmUgeW91ciBlbWFpbCBhZGRyZXNzIHJlbW92ZWQgZnJvbSBhbnkgZnV0dXJl\nIGVtYWlscyByZWxhdGVkIHRvIFhzaGVsbCA3Ljwvc3Bhbj4NCjxiciAvPjxiciAvPg0KPHNwYW4+\nUGxlYXNlIGdvIHRvIHRoZSBmb2xsb3dpbmcgVVJMIHRvIHN0YXJ0IGRvd25sb2FkaW5nIHlvdXIg\nZXZhbHVhdGlvbiBzb2Z0d2FyZTo8L3NwYW4+DQo8YnIgLz48YnIgLz4NCjxzcGFuPjxhIGhyZWY9\nImh0dHBzOi8vd3d3Lm5ldHNhcmFuZy5jb20vZW4vZG93bmxvYWRpbmcvP3Rva2VuPVZscDJUM1pN\nTVROblR6RmhXWGxFYnpWck1uSjNRVUE0U1VWWGMxcFlMVE5aY0hoRFQxcDJkV1JEU1RCQiIgdGFy\nZ2V0PSJfYmxhbmsiPmh0dHBzOi8vd3d3Lm5ldHNhcmFuZy5jb20vZW4vZG93bmxvYWRpbmcvP3Rv\na2VuPVZscDJUM1pNTVROblR6RmhXWGxFYnpWck1uSjNRVUE0U1VWWGMxcFlMVE5aY0hoRFQxcDJk\nV1JEU1RCQjwvYT48L3NwYW4+DQo8YnIgLz48YnIgLz4NCjxzcGFuPlRoaXMgbGluayB3aWxsIGV4\ncGlyZSBvbiBNYXkgMjEsIDIwMjE8L3NwYW4+IDxzcGFuPllvdSBjYW4gZXZhbHVhdGUgdGhlIHNv\nZnR3YXJlIGZvciAzMCBkYXlzIHNpbmNlIGluc3RhbGxhdGlvbi48L3NwYW4+DQo8YnIgLz48YnIg\nLz48YnIgLz4NCjxiPkRvIHlvdSBoYXZlIGFueSBxdWVzdGlvbnM/PC9iPg0KPGJyIC8+DQo8c3Bh\nbj5XZSBvZmZlciBmcmVlIHRlY2huaWNhbCBzdXBwb3J0IGR1cmluZyB0aGUgZXZhbHVhdGlvbiBw\nZXJpb2QuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMsIHBsZWFzZSBzZW5kIHVzIGFuIGVtYWls\nIGF0IDxhIGhyZWY9Im1haWx0bzpzdXBwb3J0QG5ldHNhcmFuZy5jb20iPnN1cHBvcnRAbmV0c2Fy\nYW5nLmNvbTwvYT4uPC9zcGFuPg0KPGJyIC8+PGJyIC8+PGJyIC8+DQo8c3Bhbj5CZXN0IHJlZ2Fy\nZHMsPC9zcGFuPg0KPGJyIC8+PGJyIC8+PGJyIC8+DQo8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFk\nZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPg0KPHRib2R5Pg0KPHRyPjx0ZD49PT09PT09PT09PT09\nPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC90\nZD48L3RyPg0KPHRyPjx0ZD5OZXRTYXJhbmcsIEluYy48L3RkPjwvdHI+DQo8dHI+PHRkPjQ3MDEg\nUGF0cmljayBIZW5yeSBEci4gQkxERyAyMiwgU3VpdGUgMTM3LCBTYW50YSBDbGFyYSwgQ0EgOTUw\nNTQsIFUuUy5BLjwvdGQ+PC90cj4NCjx0cj48dGQ+V2Vic2l0ZTogaHR0cDovL3d3dy5uZXRzYXJh\nbmcuY29tIHwgRW1haWw6IHN1cHBvcnRAbmV0c2FyYW5nLmNvbTwvdGQ+PC90cj4NCjx0cj48dGQ+\nUGhvbmU6ICg2NjkpIDIwNC0zMzAxPC90ZD48L3RyPg0KPC90Ym9keT4NCjwvdGFibGU+DQo=\n\n"
19+
r := strings.NewReader(msg)
20+
m, err := mail.ReadMessage(r)
21+
if err != nil {
22+
log.Fatal(err)
23+
}
24+
header := m.Header
25+
fmt.Println("Date:", header.Get("Date"))
26+
fmt.Println("From:", header.Get("From"))
27+
fmt.Println("To:", header.Get("To"))
28+
fmt.Println("Subject:", header.Get("Subject"))
29+
fmt.Println("Content-Transfer-Encoding:", header.Get("Content-Transfer-Encoding"))
30+
31+
buf := new(bytes.Buffer) // io.ReadCloser类型转换为string
32+
buf.ReadFrom(m.Body)
33+
b := buf.String()
34+
fmt.Println("-------", b)
35+
}
36+
37+
func TestLinShiYouXiangSuffix(t *testing.T) {
38+
LinShiYouXiangSuffix()
39+
}
40+
41+
func TestLinShiYouXiangList(t *testing.T) {
42+
list, _ := LinShiYouXiangList("5wij52emu")
43+
t.Log(list)
44+
}
45+
46+
func TestGetMail24(t *testing.T) {
47+
//GetMail24()
48+
var test string
49+
//ctx, cancel := Apply(true)
50+
//defer cancel()
51+
ctx, _ := Apply(true)
52+
err := chromedp.Run(ctx, GetMail24MailName(&test))
53+
t.Log(err)
54+
t.Log(test)
55+
err = chromedp.Run(ctx, GetMail24LatestMail(&test))
56+
t.Log(err)
57+
fmt.Println(test)
58+
}
59+
60+
func TestGetSecmail(t *testing.T) {
61+
// 获取邮箱
62+
/*res, err := utils.HttpReadBodyString(http.MethodGet, secmail1+"?action=genRandomMailbox&count=1", "",
63+
nil, nil)
64+
var data []interface{}
65+
err = json.Unmarshal([]byte(res), &data)
66+
fmt.Println(res, err)
67+
r := strings.Split(data[0].(string), "@") // 获取用户名和域名*/
68+
//url := secmail1 + "?action=getMessages&login=" + r[0] + "&domain=" + r[1]
69+
url := secmail1 + "?action=getMessages&login=qw7dtxz8gu&domain=1secmail.org"
70+
// 获取邮件列表
71+
mailList, err := utils.HttpReadBodyJsonMapArray(http.MethodGet, url, "", nil, nil)
72+
fmt.Println(mailList, err)
73+
if len(mailList) == 0 {
74+
return
75+
}
76+
// 科学计数法转换string数字
77+
newNum := big.NewRat(1, 1)
78+
newNum.SetFloat64(mailList[0]["id"].(float64))
79+
id := newNum.FloatString(0)
80+
// 获取邮件内容
81+
m, err := utils.HttpReadBodyJsonMap(http.MethodGet, secmail1+"?action=readMessage&login=qw7dtxz8gu&domain=1secmail.org&id="+id, "",
82+
nil, nil)
83+
fmt.Println(m, err)
84+
}

reptile/reptile_test.go

Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -12,40 +12,12 @@
1212
package reptile
1313

1414
import (
15-
"bytes"
16-
"fmt"
1715
"github.com/chromedp/cdproto/target"
1816
"github.com/chromedp/chromedp"
19-
"log"
20-
"net/mail"
21-
"strings"
2217
"testing"
2318
"time"
2419
)
2520

26-
func TestLinShiYouXiangSuffix(t *testing.T) {
27-
LinShiYouXiangSuffix()
28-
}
29-
30-
func TestLinShiYouXiangList(t *testing.T) {
31-
list, _ := LinShiYouXiangList("5wij52emu")
32-
t.Log(list)
33-
}
34-
35-
func TestGetMail24(t *testing.T) {
36-
//GetMail24()
37-
var test string
38-
//ctx, cancel := Apply(true)
39-
//defer cancel()
40-
ctx, _ := Apply(true)
41-
err := chromedp.Run(ctx, GetMail24MailName(&test))
42-
t.Log(err)
43-
t.Log(test)
44-
err = chromedp.Run(ctx, GetMail24LatestMail(&test))
45-
t.Log(err)
46-
fmt.Println(test)
47-
}
48-
4921
func TestApply(t *testing.T) {
5022
ctx, cancel := Apply(false)
5123
defer cancel()
@@ -71,24 +43,3 @@ func TestApply(t *testing.T) {
7143
t.Log(err)
7244
t.Log(res)
7345
}
74-
75-
// https://pkg.go.dev/net/mail#ReadMessage
76-
func TestMail(t *testing.T) {
77-
msg := "Received: from a27-154.smtp-out.us-west-2.amazonses.com ([54.240.27.154]) by temporary-mail.net\n for <yikxcsuka@meantinc.com>; Wed, 21 Apr 2021 13:29:21 +0800 (CST)\nDKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple;\n\ts=n6yk34xlzntpmtevqgs5ghp2jksprvft; d=netsarang.com; t=1618982959;\n\th=Date:To:From:Reply-To:Subject:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding;\n\tbh=OsRfLaUS97/+yRoJ/BSpIARvBe+S33pKrzp1it7xCyQ=;\n\tb=LTblU9qEhTeorpht/julhD6ar7a6MDmEI9zH3TBy28KI6ah7Q+E1J0fAML2Pbcd0\n\tqX/68C8+vtGD03BGEzVPjJTJDoztO0qoNz5l7C/DSGV1MEyxh8ccQtW7rw+7+kQXv/+\n\tBKztqxpwXMjNuzZb3E0W1GYju0kr4qT5nXkMXD5o=\nDKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple;\n\ts=7v7vs6w47njt4pimodk5mmttbegzsi6n; d=amazonses.com; t=1618982959;\n\th=Date:To:From:Reply-To:Subject:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Feedback-ID;\n\tbh=OsRfLaUS97/+yRoJ/BSpIARvBe+S33pKrzp1it7xCyQ=;\n\tb=NhCoNeJCoIpySzLuSxUV5P0zlsh4pLKUz5bhIG3spGhLgW0Pzf/1ZHyJJOTL9T3C\n\tDi7ChUyfnWdRjWSp+7EiA4VNrqGtOzoOsMZKipURghknjlG8bYjpCpdGXrO1D5IBlIj\n\tCl8sZevNShTh++kQW27S4S83cuDhbwxGEgxhSy3k=\nDate: Wed, 21 Apr 2021 05:29:19 +0000\nTo: yikxcsuka@meantinc.com\nFrom: \"NetSarang, Inc.\" <no-reply@netsarang.com>\nReply-To: no-reply@netsarang.com\nSubject: Xshell 7 download instruction\nMessage-ID: <01010178f2e77a87-c9bb10f6-ef08-4dad-ba57-4524546de5d2-000000@us-west-2.amazonses.com>\nX-Mailer: PHPMailer 5.2.10 (https://github.com/PHPMailer/PHPMailer/)\nMIME-Version: 1.0\nContent-Type: text/html; charset=utf-8\nContent-Transfer-Encoding: base64\nFeedback-ID: 1.us-west-2.l7ekw14vD6Jumpwas0GHbg0O54ld7FbCklw8tqJLu88=:AmazonSES\nX-SES-Outgoing: 2021.04.21-54.240.27.154\n\nPHNwYW4+RGVhciB1c2VyLDwvc3Bhbj4NCjxiciAvPjxiciAvPg0KPHNwYW4+VGhhbmsgeW91IGZv\nciB5b3VyIGludGVyZXN0IGluIFhzaGVsbCA3LiBXZSBoYXZlIHByZXBhcmVkIHlvdXIgZXZhbHVh\ndGlvbiBwYWNrYWdlLiBJZiB5b3UgZGlkIG5vdCByZXF1ZXN0IGFuIGV2YWx1YXRpb24gb2YgWHNo\nZWxsIDcsIHBsZWFzZSBjb250YWN0IG91ciBzdXBwb3J0IHRlYW0gYXQgc3VwcG9ydEBuZXRzYXJh\nbmcuY29tIHRvIGhhdmUgeW91ciBlbWFpbCBhZGRyZXNzIHJlbW92ZWQgZnJvbSBhbnkgZnV0dXJl\nIGVtYWlscyByZWxhdGVkIHRvIFhzaGVsbCA3Ljwvc3Bhbj4NCjxiciAvPjxiciAvPg0KPHNwYW4+\nUGxlYXNlIGdvIHRvIHRoZSBmb2xsb3dpbmcgVVJMIHRvIHN0YXJ0IGRvd25sb2FkaW5nIHlvdXIg\nZXZhbHVhdGlvbiBzb2Z0d2FyZTo8L3NwYW4+DQo8YnIgLz48YnIgLz4NCjxzcGFuPjxhIGhyZWY9\nImh0dHBzOi8vd3d3Lm5ldHNhcmFuZy5jb20vZW4vZG93bmxvYWRpbmcvP3Rva2VuPVZscDJUM1pN\nTVROblR6RmhXWGxFYnpWck1uSjNRVUE0U1VWWGMxcFlMVE5aY0hoRFQxcDJkV1JEU1RCQiIgdGFy\nZ2V0PSJfYmxhbmsiPmh0dHBzOi8vd3d3Lm5ldHNhcmFuZy5jb20vZW4vZG93bmxvYWRpbmcvP3Rv\na2VuPVZscDJUM1pNTVROblR6RmhXWGxFYnpWck1uSjNRVUE0U1VWWGMxcFlMVE5aY0hoRFQxcDJk\nV1JEU1RCQjwvYT48L3NwYW4+DQo8YnIgLz48YnIgLz4NCjxzcGFuPlRoaXMgbGluayB3aWxsIGV4\ncGlyZSBvbiBNYXkgMjEsIDIwMjE8L3NwYW4+IDxzcGFuPllvdSBjYW4gZXZhbHVhdGUgdGhlIHNv\nZnR3YXJlIGZvciAzMCBkYXlzIHNpbmNlIGluc3RhbGxhdGlvbi48L3NwYW4+DQo8YnIgLz48YnIg\nLz48YnIgLz4NCjxiPkRvIHlvdSBoYXZlIGFueSBxdWVzdGlvbnM/PC9iPg0KPGJyIC8+DQo8c3Bh\nbj5XZSBvZmZlciBmcmVlIHRlY2huaWNhbCBzdXBwb3J0IGR1cmluZyB0aGUgZXZhbHVhdGlvbiBw\nZXJpb2QuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMsIHBsZWFzZSBzZW5kIHVzIGFuIGVtYWls\nIGF0IDxhIGhyZWY9Im1haWx0bzpzdXBwb3J0QG5ldHNhcmFuZy5jb20iPnN1cHBvcnRAbmV0c2Fy\nYW5nLmNvbTwvYT4uPC9zcGFuPg0KPGJyIC8+PGJyIC8+PGJyIC8+DQo8c3Bhbj5CZXN0IHJlZ2Fy\nZHMsPC9zcGFuPg0KPGJyIC8+PGJyIC8+PGJyIC8+DQo8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFk\nZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPg0KPHRib2R5Pg0KPHRyPjx0ZD49PT09PT09PT09PT09\nPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC90\nZD48L3RyPg0KPHRyPjx0ZD5OZXRTYXJhbmcsIEluYy48L3RkPjwvdHI+DQo8dHI+PHRkPjQ3MDEg\nUGF0cmljayBIZW5yeSBEci4gQkxERyAyMiwgU3VpdGUgMTM3LCBTYW50YSBDbGFyYSwgQ0EgOTUw\nNTQsIFUuUy5BLjwvdGQ+PC90cj4NCjx0cj48dGQ+V2Vic2l0ZTogaHR0cDovL3d3dy5uZXRzYXJh\nbmcuY29tIHwgRW1haWw6IHN1cHBvcnRAbmV0c2FyYW5nLmNvbTwvdGQ+PC90cj4NCjx0cj48dGQ+\nUGhvbmU6ICg2NjkpIDIwNC0zMzAxPC90ZD48L3RyPg0KPC90Ym9keT4NCjwvdGFibGU+DQo=\n\n"
78-
r := strings.NewReader(msg)
79-
m, err := mail.ReadMessage(r)
80-
if err != nil {
81-
log.Fatal(err)
82-
}
83-
header := m.Header
84-
fmt.Println("Date:", header.Get("Date"))
85-
fmt.Println("From:", header.Get("From"))
86-
fmt.Println("To:", header.Get("To"))
87-
fmt.Println("Subject:", header.Get("Subject"))
88-
fmt.Println("Content-Transfer-Encoding:", header.Get("Content-Transfer-Encoding"))
89-
90-
buf := new(bytes.Buffer) // io.ReadCloser类型转换为string
91-
buf.ReadFrom(m.Body)
92-
b := buf.String()
93-
fmt.Println("-------", b)
94-
}

utils/http.go

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -249,8 +249,9 @@ func HttpReadBodyJsonMap(method, urlText, contentType string, params, header map
249249
return data, nil
250250
}
251251

252-
// HttpReadBodyJsonArray 请求并读取返回内容为json数组
253-
func HttpReadBodyJsonArray(method, urlText, contentType string, params, header map[string]string) ([]map[string]interface{}, error) {
252+
// HttpReadBodyJsonMapArray 请求并读取返回内容为json Map数组
253+
func HttpReadBodyJsonMapArray(method, urlText, contentType string, params,
254+
header map[string]string) ([]map[string]interface{}, error) {
254255
res, err := HttpReadBody(method, urlText, contentType, params, header)
255256
if err != nil {
256257
return nil, err
@@ -263,6 +264,20 @@ func HttpReadBodyJsonArray(method, urlText, contentType string, params, header m
263264
return data, nil
264265
}
265266

267+
// HttpReadBodyJsonArray 请求并读取返回内容为json数组
268+
func HttpReadBodyJsonArray(method, urlText, contentType string, params, header map[string]string) ([]interface{}, error) {
269+
res, err := HttpReadBody(method, urlText, contentType, params, header)
270+
if err != nil {
271+
return nil, err
272+
}
273+
var data []interface{}
274+
err = json.Unmarshal(res, &data)
275+
if err != nil {
276+
return nil, err
277+
}
278+
return data, nil
279+
}
280+
266281
type HttpClient struct {
267282
Method string
268283
UrlText string
@@ -291,6 +306,10 @@ func (hc *HttpClient) HttpReadBodyJsonMap() (map[string]interface{}, error) {
291306
return HttpReadBodyJsonMap(hc.Method, hc.UrlText, hc.ContentType, hc.Params, hc.Header)
292307
}
293308

294-
func (hc *HttpClient) ReadBodyJsonArray() ([]map[string]interface{}, error) {
309+
func (hc *HttpClient) HttpReadBodyJsonMapArray() ([]map[string]interface{}, error) {
310+
return HttpReadBodyJsonMapArray(hc.Method, hc.UrlText, hc.ContentType, hc.Params, hc.Header)
311+
}
312+
313+
func (hc *HttpClient) ReadBodyJsonArray() ([]interface{}, error) {
295314
return HttpReadBodyJsonArray(hc.Method, hc.UrlText, hc.ContentType, hc.Params, hc.Header)
296315
}

0 commit comments

Comments
 (0)