enmime is a MIME encoding and decoding library for Go, focused on generating and parsing MIME encoded emails. It is being developed in tandem with the Inbucket email service.
enmime includes a fluent interface builder for generating MIME encoded messages, see the wiki for example Builder Usage.
BCC() and BCCAddrs() addresses are not written into the Bcc: header of the message built by
Build(); they are passed to the SMTP server as envelope recipients by Send() instead, per
RFC 5322 section 3.6.3. An absent Bcc header is therefore expected, not an encoding bug. Use
Header() if you want one in the message itself. Envelope.Send() behaves the same way: a Bcc
header found in a parsed message is delivered as recipients, but stripped from the transmitted
bytes.
When editing the address headers of a parsed message before sending it, prefer
Envelope.SetAddressHeader() over SetHeader(): it writes an RFC 5322 address list and encodes only
the non-ASCII display names as RFC 2047 encoded-words, so the result stays a parseable address list
rather than one encoded-word covering the whole value.
See our Pkg Docs for examples and API usage information.
enmime is production quality, but there are many buggy MIME encoders in the wild, so you may still encounter messages it cannot parse.
See CONTRIBUTING.md for more information.
enmime is written in Go.
enmime is open source software released under the MIT License. The latest version can be found at https://github.com/jhillyerd/enmime