文章

go-imap保持长连接

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package main

import (
	"fmt"
	"github.com/emersion/go-imap"
	"github.com/emersion/go-imap/client"
	"time"
)

func main() {
	imapClient, _ := client.Dial("imap.exmail.qq.com:993")
	err := imapClient.Login("fsbook@fscloude.cn", "8gGNCGBQr8EFGZoc")
	fmt.Println(err)
	for {
		time.Sleep(time.Second * 10)
		mailboxes := make(chan *imap.MailboxInfo, 20)
		go func() {
			imapClient.List("", "*", mailboxes)
		}()
	}
}

安装go-imap模块遇到的问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
问题: 
no required module provides package : go.mod file not found in current directory or any parent
意思是: 找不到导入模块的包

尝试1:
go get -u github.com/emersion/go-imap

尝试2:
网上基本都是这个解决方案:执行:go env -w GO111MODULE=auto
但是我的已经打开了,所以排除这个解决方案

尝试3: 
go mod init 新模块名字
提示:
[root@edm-proxy-slb script]# go mod init go-imap
go: creating new go.mod: module go-imap
go: to add module requirements and sums:
	go mod tidy
	
执行: go mod tidy
go: finding module for package github.com/emersion/go-imap
go: finding module for package github.com/emersion/go-imap/backend/memory
go: finding module for package github.com/emersion/go-imap/client
go: finding module for package github.com/emersion/go-imap/server
go: found github.com/emersion/go-imap in github.com/emersion/go-imap v1.2.1
go: found github.com/emersion/go-imap/backend/memory in github.com/emersion/go-imap v1.2.1
go: found github.com/emersion/go-imap/client in github.com/emersion/go-imap v1.2.1
go: found github.com/emersion/go-imap/server in github.com/emersion/go-imap v1.2.1
go: downloading github.com/emersion/go-message v0.15.0
go: downloading github.com/emersion/go-textwrapper v0.0.0-20200911093747-65d896831594

并在当前目录生成两个个文件: go.mod、go.sum
go.mod 内容如下: 
module go-imap
go 1.19
require github.com/emersion/go-imap v1.2.1
require (
	github.com/emersion/go-message v0.15.0 // indirect
	github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 // indirect
	github.com/emersion/go-textwrapper v0.0.0-20200911093747-65d896831594 // indirect
	golang.org/x/text v0.3.7 // indirect
)

go.sum 内容如下:
github.com/emersion/go-imap v1.2.1 h1:+s9ZjMEjOB8NzZMVTM3cCenz2JrQIGGo5j1df19WjTA=
github.com/emersion/go-imap v1.2.1/go.mod h1:Qlx1FSx2FTxjnjWpIlVNEuX+ylerZQNFE5NsmKFSejY=
github.com/emersion/go-message v0.15.0 h1:urgKGqt2JAc9NFJcgncQcohHdiYb803YTH9OQwHBHIY=
github.com/emersion/go-message v0.15.0/go.mod h1:wQUEfE+38+7EW8p8aZ96ptg6bAb1iwdgej19uXASlE4=
github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 h1:OJyUGMJTzHTd1XQp98QTaHernxMYzRaOasRir9hUlFQ=
github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21/go.mod h1:iL2twTeMvZnrg54ZoPDNfJaJaqy0xIQFuBdrLsmspwQ=
github.com/emersion/go-textwrapper v0.0.0-20200911093747-65d896831594 h1:IbFBtwoTQyw0fIM5xv1HF+Y+3ZijDR839WMulgxCcUY=
github.com/emersion/go-textwrapper v0.0.0-20200911093747-65d896831594/go.mod h1:aqO8z8wPrjkscevZJFVE1wXJrLpC5LtJG7fqLOsPb2U=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=



之后 go run go-imap.go 执行成功


本文由作者按照 CC BY 4.0 进行授权