package main import ( "fmt" "github.com/taoshihan1991/imaptool/tmpl" "github.com/taoshihan1991/imaptool/tools" "html/template" "log" "net/http" "strconv" "sync" ) const PageSize = 20 func main() { log.Println("listen on 8080...\r\n访问:http://127.0.0.1:8080") //根路径 http.HandleFunc("/", index) //邮件夹 http.HandleFunc("/list", list) //登陆界面 http.HandleFunc("/login", login) //详情界面 http.HandleFunc("/view", view) //监听端口 http.ListenAndServe(":8080", nil) } //首页跳转 func index(w http.ResponseWriter, r *http.Request) { if r.URL.RequestURI() == "/favicon.ico" { return } mailServer:=tools.GetMailServerFromCookie(r) if mailServer==nil { http.Redirect(w, r, "/login", 302) } else { res := tools.CheckEmailPassword(mailServer.Server, mailServer.Email, mailServer.Password) if res { http.Redirect(w, r, "/list", 302) } else { http.Redirect(w, r, "/login", 302) } } } //输出列表 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 } mailServer:=tools.GetMailServerFromCookie(r) render := new(tools.IndexData) render.CurrentPage = currentPage var prePage int if (currentPage - 1) <= 0 { prePage = 1 } else { prePage = currentPage - 1 } render.PrePage = fmt.Sprintf("/list?fid=%s&page=%d", fid, prePage) render.NextPage = fmt.Sprintf("/list?fid=%s&page=%d", fid, currentPage+1) var wg sync.WaitGroup wg.Add(2) go func() { defer wg.Done() folders := tools.GetFolders(mailServer.Server, mailServer.Email,mailServer.Password, fid) render.Folders = folders render.Fid = fid //PageCount:= render.Folders[fid]/PAGE_SIZE numPages := "" start := currentPage - 5 if start <= 0 { start = 1 } end := start + 11 //if end>=PageCount{ // end=PageCount //} for i := start; i < end; i++ { active := "" if currentPage == i { active = "active" } numPages += fmt.Sprintf("