Skip to content

Latest commit

 

History

History
78 lines (49 loc) · 2.11 KB

README.md

File metadata and controls

78 lines (49 loc) · 2.11 KB

go-email

Installation

$ go get github.com/veqryn/go-email/email

Releases

This is still a work in progress.

Usage

Parse an existing email:

import "github.com/veqryn/go-email/email"
// reader = io.Reader with your raw email text
// (or use: strings.NewReader(rawString) or bytes.NewReader(rawBytes))
msg, err := email.ParseMessage(reader)

Find specific part(s) in a "multipart" message:

for _, part := range msg.PartsContentTypePrefix("text/html") {
    ...
}

Find specific part(s) within a message and all sub-messages and sub-parts:

for _, part := range msg.MessagesContentTypePrefix("application/pdf") {
    ...
}

Walk the full message tree:

for _, part := range msg.MessagesAll() {
    mediaType, params, err := part.Header.ContentType()
    switch mediaType {
    case "text/plain":
        fmt.Println(string(part.Body))
    case "application/pdf":
        ...
    }
}

Get the decoded body of a message or part:

myBytes := msg.Body

Create a new simple email:

// text = string with text/plain content, html = string with text/html content
header := email.NewHeader("[email protected]", "This is my subject", "[email protected]", "[email protected]")
msg := email.NewMessage(header, text, html)

Create a new more complex email:

// text = string with text/plain content, html = string with text/html content
// gopherReader = io.Reader with the content of an image (as an example)
// docBytes = []byte with the content of a pdf (as an example)

header := email.Header{}
h.SetFrom("[email protected]")
h.SetTo("[email protected]", "[email protected]")
h.SetCc("[email protected]", "[email protected]")
h.SetSubject("Hello from go-email")

imagePart, err := email.NewPartAttachment(gopherReader, "gopher.png")
pdfPart := email.NewPartAttachmentFromBytes(docBytes, "documentation.pdf")

msg := email.NewMessage(header, text, html, imagePart, pdfPart)

Send an email:

msg.Send("smtp.gmail.com:587", smtp.PlainAuth("", "[email protected]", "1234567890", "smtp.gmail.com"))