Go lib for parsing email in simple way.
- Support parsing emails with content types of
text/*
andmultipart/*
. - Support parsing Chinese content, such as Chinese characters in email address aliases, email subject, and email content.
- Support parsing email attachments.
- Support parsing emails with content encoded in base64.
- Support parsing email headers and email content separately, or parse them all at once.
package main import ( "fmt" "log" "strings" "github.com/bytbox/go-pop3" "github.com/windvalley/go-mailparser" ) func main() { c, err := pop3.Dial("mail.xxx.com:110") if err != nil { log.Fatal(err) } defer func() { if err := c.Quit(); err != nil { fmt.Println(err) } }() if err := c.Auth("xxx@xxx.com", "yourpassword"); err != nil { log.Fatal(err) } msgs, _, err := c.ListAll() if err != nil { log.Fatal(err) } for _, v := range msgs { msg, err := c.Retr(v) if err != nil { fmt.Println(err) continue } // string to io.Reader msgReader := strings.NewReader(msg) // parse email res, err := mailparser.Parse(msgReader) if err != nil { fmt.Println(err) continue } // check MailMessage fmt.Printf("result: %+v\n", res) // check attachments for _, v := range res.Attachments { // You can handle the file data (v.Data) appropriately based on the content type. fmt.Printf("filename: %s, content-type: %s\n", v.Filename, v.ContentType) } } }
This project is under the MIT License. See the LICENSE file for the full license text.