net/mail

Guided tour · Networking · pkg.go.dev →

Parse RFC 5322 addresses and message headers. Read emails, not send them (see net/smtp for that).

Addresses

ParseAddress / ParseAddressList

addr, _ := mail.ParseAddress("Ada Lovelace <ada@example.com>")
fmt.Println(addr.Name, addr.Address)

list, _ := mail.ParseAddressList("ada@x.com, grace@y.com")
for _, a := range list {
    fmt.Println(a.Address)
}

Full messages

ReadMessage

msg, _ := mail.ReadMessage(f)
fmt.Println(msg.Header.Get("From"))
fmt.Println(msg.Header.Get("Subject"))

body, _ := io.ReadAll(msg.Body)
fmt.Println(string(body))