diff --git a/server.go b/server.go index e95a417..4694e48 100644 --- a/server.go +++ b/server.go @@ -6,7 +6,9 @@ import ( "html/template" "log" "net/http" + "strconv" "strings" + "sync" ) type IndexData struct { @@ -46,15 +48,37 @@ func index(w http.ResponseWriter, r *http.Request) { //输出列表 func list(w http.ResponseWriter, r *http.Request) { + values:=r.URL.Query() + fid:="" + currentPage:=0 + if len(values["fid"])!=0{ + fid=values["fid"][0] + } + if len(values["page"])!=0{ + currentPage,_=strconv.Atoi(values["page"][0]) + } + if fid==""{ + fid="INBOX" + } + if currentPage==0{ + currentPage=1 + } + auth := getCookie(r, "auth") authStrings := strings.Split(auth, "|") render := new(IndexData) - folders := tools.GetFolders(authStrings[0], authStrings[1], authStrings[2]) - render.Folders = folders - mails := tools.GetFolderMail(authStrings[0], authStrings[1], authStrings[2], "INBOX", 10) + var wg sync.WaitGroup + wg.Add(1) + go func() { + defer wg.Done() + folders :=tools.GetFolders(authStrings[0], authStrings[1], authStrings[2]) + render.Folders = folders + }() + mails := tools.GetFolderMail(authStrings[0], authStrings[1], authStrings[2], fid,currentPage, 20) render.Mails = mails + wg.Wait() t, _ := template.ParseFiles("./tmpl/index.html") t.Execute(w, render) } diff --git a/tmpl/index.html b/tmpl/index.html index c084bd2..031ed36 100644 --- a/tmpl/index.html +++ b/tmpl/index.html @@ -24,7 +24,7 @@
  • 邮件夹
  • {{ range $key, $value := .Folders}}
  • - {{$key}} + {{$key}} {{if ne $value 0 }}{{$value}}{{end}}
  • {{end}} diff --git a/tools/imap.go b/tools/imap.go index 18cc5a4..f83ba6c 100644 --- a/tools/imap.go +++ b/tools/imap.go @@ -86,8 +86,9 @@ func GetFolders(server string, email string, password string)map[string]int{ log.Println(folders) return folders } + //获取邮件夹邮件 -func GetFolderMail(server string, email string, password string,folder string,pagesize int)[]string{ +func GetFolderMail(server string, email string, password string,folder string,currentPage int,pagesize int)[]string{ var c *client.Client //defer c.Logout() c=connect(server,email,password) @@ -96,7 +97,7 @@ func GetFolderMail(server string, email string, password string,folder string,pa } mbox, _ := c.Select(folder, true) - to := mbox.Messages + to := mbox.Messages-uint32((currentPage-1)*pagesize) from := to-uint32(pagesize) seqset := new(imap.SeqSet) @@ -107,10 +108,11 @@ func GetFolderMail(server string, email string, password string,folder string,pa go func() { done <- c.Fetch(seqset, []imap.FetchItem{imap.FetchEnvelope}, messages) }() - log.Println(111) var res []string for msg := range messages { res=append(res,msg.Envelope.Subject) } + log.Println(res) + return res } \ No newline at end of file