parsemail

package module
v1.0.11 Latest Latest
Warning

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

Go to latest
Published: Oct 8, 2021 License: MIT Imports: 17 Imported by: 0

README

Parsemail - simple email parsing Go library

Build Status Coverage Status Go Report Card

This library allows for parsing an email message into a more convenient form than the net/mail provides. Where the net/mail just gives you a map of header fields and a io.Reader of its body, Parsemail allows access to all the standard header fields set in RFC5322, html/text body as well as attachements/embedded content as binary streams with metadata.

Simple usage

You just parse a io.Reader that holds the email data. The returned Email struct contains all the standard email information/headers as public fields.

var reader io.Reader // this reads an email message
email, err := parsemail.Parse(reader) // returns Email struct and error
if err != nil {
    // handle error
}

fmt.Println(email.Subject)
fmt.Println(email.From)
fmt.Println(email.To)
fmt.Println(email.HTMLBody)

Retrieving attachments

Attachments are a easily accessible as Attachment type, containing their mime type, filename and data stream.

var reader io.Reader
email, err := parsemail.Parse(reader)
if err != nil {
    // handle error
}

for _, a := range(email.Attachments) {
    fmt.Println(a.Filename)
    fmt.Println(a.ContentType)
    //and read a.Data
}

Retrieving embedded files

You can access embedded files in the same way you can access attachments. They contain the mime type, data stream and content id that is used to reference them through the email.

var reader io.Reader
email, err := parsemail.Parse(reader)
if err != nil {
    // handle error
}

for _, a := range(email.EmbeddedFiles) {
    fmt.Println(a.CID)
    fmt.Println(a.ContentType)
    //and read a.Data
}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CharsetReader func(charset string, input io.Reader) (io.Reader, error)

CharsetReader , if non-nil, defines a function to generate charset-conversion readers, converting from the provided charset into UTF-8. Charsets are always lower-case. utf-8 and us-ascii charsets are handled by default. One of the CharsetReader's result values must be non-nil.

Importing github.com/emersion/go-message/charset will set CharsetReader to a function that handles most common charsets. Alternatively, CharsetReader can be set to e.g. golang.org/x/net/html/charset.NewReaderLabel.

Functions

func IsUnknownCharset added in v1.0.4

func IsUnknownCharset(err error) bool

IsUnknownCharset returns a boolean indicating whether the error is known to report that the charset advertised by the entity is unknown.

func Reader added in v1.0.4

func Reader(charset string, input io.Reader) (io.Reader, error)

Reader returns an io.Reader that converts the provided charset to UTF-8.

func RegisterEncoding added in v1.0.4

func RegisterEncoding(name string, enc encoding.Encoding)

RegisterEncoding registers an encoding. This is intended to be called from the init function in packages that want to support additional charsets.

Types

type Attachment

type Attachment struct {
	Filename    string
	ContentType string
	Data        io.Reader
}

Attachment with filename, content type and data (as a io.Reader)

type Email

type Email struct {
	Header mail.Header

	Subject    string
	Sender     *mail.Address
	From       []*mail.Address
	ReplyTo    []*mail.Address
	To         []*mail.Address
	Cc         []*mail.Address
	Bcc        []*mail.Address
	Date       time.Time
	MessageID  string
	InReplyTo  []string
	References []string

	ResentFrom      []*mail.Address
	ResentSender    *mail.Address
	ResentTo        []*mail.Address
	ResentDate      time.Time
	ResentCc        []*mail.Address
	ResentBcc       []*mail.Address
	ResentMessageID string

	ContentType string
	Content     io.Reader

	HTMLBody string
	TextBody string

	Attachments    []Attachment
	EmbeddedFiles  []EmbeddedFile
	EmbeddedEmails []Attachment
}

Email with fields for all the headers defined in RFC5322 with it's attachments and

func Parse

func Parse(r io.Reader) (email Email, err error)

Parse an email message read from io.Reader into parsemail.Email struct

type EmbeddedFile

type EmbeddedFile struct {
	CID         string
	ContentType string
	Data        io.Reader
}

EmbeddedFile with content id, content type and data (as a io.Reader)

type UnknownCharsetError added in v1.0.4

type UnknownCharsetError struct {
	// contains filtered or unexported fields
}

func (UnknownCharsetError) Error added in v1.0.4

func (u UnknownCharsetError) Error() string

func (UnknownCharsetError) Unwrap added in v1.0.4

func (u UnknownCharsetError) Unwrap() error

Jump to

Keyboard shortcuts

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