parsemail

package module
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: May 2, 2024 License: MIT Imports: 13 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

This section is empty.

Functions

This section is empty.

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 Charset

type Charset string
const (
	Iso88591    Charset = "iso-8859-1"
	Iso88592    Charset = "iso-8859-2"
	Iso88593    Charset = "iso-8859-3"
	Iso88594    Charset = "iso-8859-4"
	Iso88595    Charset = "iso-8859-5"
	Iso88596    Charset = "iso-8859-6"
	Iso88597    Charset = "iso-8859-7"
	Iso88598    Charset = "iso-8859-8"
	Iso88599    Charset = "iso-8859-9"
	Iso885910   Charset = "iso-8859-10"
	Iso885913   Charset = "iso-8859-13"
	Iso885914   Charset = "iso-8859-14"
	Iso885915   Charset = "iso-8859-15"
	Iso885916   Charset = "iso-8859-16"
	Utf8        Charset = "utf-8"
	UsAscii     Charset = "us-ascii"
	Windows1250 Charset = "windows-1250"
	Windows1251 Charset = "windows-1251"
	Windows1252 Charset = "windows-1252"
	Windows1253 Charset = "windows-1253"
	Windows1254 Charset = "windows-1254"
	Windows1255 Charset = "windows-1255"
	Windows1256 Charset = "windows-1256"
	Windows1257 Charset = "windows-1257"
	Windows1258 Charset = "windows-1258"
)

func (Charset) String

func (c Charset) String() string

type CharsetDecoder

type CharsetDecoder interface {
	Bytes(b []byte) ([]byte, error)
	Reader(r io.Reader) io.Reader
}

type DefaultDecoder

type DefaultDecoder struct{}

func (DefaultDecoder) Bytes

func (d DefaultDecoder) Bytes(b []byte) ([]byte, error)

func (DefaultDecoder) Reader

func (d DefaultDecoder) Reader(r io.Reader) 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
}

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)

Jump to

Keyboard shortcuts

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