Giter Site home page Giter Site logo

go-email's Introduction

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"))

go-email's People

Contributors

veqryn avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.