gophermail

package module
v0.0.0-...-f6b18b8 Latest Latest
Warning

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

Go to latest
Published: Nov 29, 2013 License: MIT Imports: 14 Imported by: 2

README

gophermail

gophermail is a simple package for sending mail using net/smtp. Something that the core sorely lacks.

View documentation on GoDoc

Credits

The API is heavily inspired by the code.google.com/p/appengine-go/appengine/mail package.

Documentation

Overview

gophermail is a simple package for sending mail using net/smtp.

Features:

  • Poviding both plain text and HTML message bodies
  • Attachments with data fed from an io.Reader
  • Reply-To header
  • To, Cc, and Bcc recipients

Notes:

  • UTF-8 encoding is always assumed.
  • Message bodies are base64 encoded instead of the more readable quoted-printable encoding.

Known Issues:

  • `Subject: ` headers longer than 75 characters are not wrapped into multiple encoded-words as per RFC 2047. Use short subjects.

TODO:

  • Use quoted-printable encoding for message bodies.
  • Properly wrap `Subject:` headers longer than 75 characters.
  • Add support for `Sender:` header.
  • Add support for multiple `From:` and `Reply-To:` addresses.
  • Auto-add a `Date:` header. i.e. "Date: " + time.Now().UTC().Format(time.RFC822)

Index

Constants

This section is empty.

Variables

View Source
var ErrMissingFromAddress = errors.New("No from address specified.")
View Source
var ErrMissingRecipient = errors.New("No recipient specified. At one To, Cc, or Bcc recipient is required.")

Functions

func NewBase64MimeEncoder

func NewBase64MimeEncoder(w io.Writer) io.WriteCloser

func SendMail

func SendMail(addr string, a smtp.Auth, msg *Message) error

SendMail connects to the server at addr, switches to TLS if possible, authenticates with mechanism a if possible, and then sends the given Message.

Based heavily on smtp.SendMail().

Types

type Attachment

type Attachment struct {
	// Name must be set to a valid file name.
	Name string

	// Optional.
	// Uses mime.TypeByExtension and falls back
	// to application/octet-stream if unknown.
	ContentType string

	Data io.Reader
}

An Attachment represents an email attachment.

type Message

type Message struct {

	// Technically this could be a list of addresses but we don't support that. See RFC 2822 s3.6.2.
	From string

	// Technically this could be a list of addresses but we don't support that. See RFC 2822 s3.6.2.
	ReplyTo string // optional

	// TODO(JPOEHLS): Make these slices of mail.Address and add AddTo, AddCc, AddBcc funcs that take strings. (Inspired by gopostal's API, https://github.com/pcrawfor/gopostal)
	// At least one of these slices must have a non-zero length.
	To, Cc, Bcc []string

	Subject string // optional

	Body     string // optional
	HTMLBody string // optional

	Attachments []Attachment // optional

	// Extra mail headers.
	Headers mail.Header
}

A Message represents an email message. Addresses may be of any form permitted by RFC 5322.

func (*Message) Bytes

func (m *Message) Bytes() ([]byte, error)

Bytes gets the encoded MIME message.

Jump to

Keyboard shortcuts

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