go-email

module
v0.0.0-...-bc82227 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 10, 2024 License: MIT

README

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("from.address@host.com", "This is my subject", "to.address@host.com", "another.to.address@host.com")
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("charlie@gmail.com")
h.SetTo("john@outlook.com", "laura@yahoo.com")
h.SetCc("sarah@icloud.com", "chris@gmail.com")
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("", "username@gmail.com", "1234567890", "smtp.gmail.com"))

Directories

Path Synopsis
Package email implements the parsing of email and mime mail messages, and may also be used to create and send email messages.
Package email implements the parsing of email and mime mail messages, and may also be used to create and send email messages.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL