Closed mooijtech closed 2 years ago
Hello emersion,
I want to get all the header fields.
func main() { inputFile, err := os.Open("/home/bot/dncleaks/emails/4.eml") // Create a new mail reader mr, err := mail.CreateReader(inputFile) if err != nil { log.Fatal(err) } // Read each mail's part for { p, err := mr.NextPart() if err == io.EOF { break } else if err != nil { log.Fatal(err) } switch h := p.Header.(type) { case *mail.InlineHeader: b, _ := ioutil.ReadAll(p.Body) log.Printf("Got text: %v\n", string(b)) for p.Header.(*mail.InlineHeader).Fields().Next() { log.Printf("Field: %s\n", p.Header.(*mail.InlineHeader).Fields().Value()) } case *mail.AttachmentHeader: filename, _ := h.Filename() log.Printf("Got attachment: %v\n", filename) } } }
But it's giving me an error:
panic: message: HeaderFields method called before Next
What am I doing wrong?
Kind regards, Marten Mooij
p.Header.(*mail.InlineHeader).Fields() returns an iterator. You need to store it in a variable, and use the same iterator when calling Value.
p.Header.(*mail.InlineHeader).Fields()
Value
Thanks, that fixed it!
Hello emersion,
I want to get all the header fields.
But it's giving me an error:
What am I doing wrong?
Kind regards, Marten Mooij