func fetchHeaderSpecificFields(args []string, c *Conn, m mailstore.Message, peekOnly bool) string { if !peekOnly { fmt.Printf("TODO: Peek not requested, mark all as non-recent\n") } fields := strings.Split(args[1], " ") hdrs := m.Header() requestedHeaders := make(textproto.MIMEHeader) replyFieldList := make([]string, len(fields)) for i, key := range fields { replyFieldList[i] = "\"" + key + "\"" // If the key exists in the headers, copy it over v := hdrs.Get(key) if v != "" { requestedHeaders.Add(key, v) } } hdr := util.MIMEHeaderToString(requestedHeaders) hdrLen := len(hdr) return fmt.Sprintf("BODY[HEADER.FIELDS (%s)] {%d}\r\n%s", strings.Join(replyFieldList, " "), hdrLen, hdr) }
func fetchFullText(args []string, c *Conn, m mailstore.Message, peekOnly bool) string { mail := fmt.Sprintf("%s\r\n%s\r\n", util.MIMEHeaderToString(m.Header()), m.Body()) mailLen := len(mail) return fmt.Sprintf("BODY[] {%d}\r\n%s", mailLen, mail) }
func fetchHeaders(args []string, c *Conn, m mailstore.Message, peekOnly bool) string { hdr := fmt.Sprintf("%s\r\n", util.MIMEHeaderToString(m.Header())) hdrLen := len(hdr) peekStr := "" if peekOnly { peekStr = ".PEEK" } return fmt.Sprintf("BODY%s[HEADER] {%d}\r\n%s", peekStr, hdrLen, hdr) }