Package detail

address-rfc2821

haraka33.8kMIT2.1.3

RFC-5321 (Envelope) email address parser

email, envelope, address, rfc821

readme

Build Status Coverage Status

address-rfc2821

Parser for RFC-821/RFC-2821/RFC-5321 (envelope) format email addresses (Mailbox and Path).

This module parses email addresses from the SMTP envelope. These are the portions immediately following the SMTP verbs MAIL FROM: and RCPT TO:. RFC-5321 email addesses look like this:

<>             // null
<Postmaster>
<from@example.com>
<to@example.com>
<dot.atom.string@example.com>
<"quoted string"@example.com>
angle-brackets-optional@example.com

To parse email addresses contained in the message headers (To: From: BCC, CC), look instead at an RFC 2822/5322 parser such as address-rfc2822 or email-addresses.

Installation

npm install address-rfc2821

Usage

const Address = require('address-rfc2821').Address;

const parsed = new Address('<user@example.com>');

Address Object

The Address object is an interface to reading email addresses passed in at SMTP time. It parses all the formats in RFC-2821 and 2822, as well as UTF8 email addresses according to the RFCs 5890, 5891 and 5892 providing the domain in punycode when encountered It also supports correctly escaping email addresses.

API

  • new Address (user, host)

Create a new address object for user@host

  • new Address (email)

Creates a new address object by parsing the email address. Will throw an exception if the address cannot be parsed.

  • address.user

Access the local part of the email address

  • address.host

Access the domain part of the email address, decoded if necessary to punycode

  • address.original_host

Access the domain part of the email address, unencoded and case preserved

  • address.format(use_punycode=false)

Provides the email address in the appropriate <user@host> format. And deals correctly with the null sender and local names.

If use_punycode = true, uses address.host instead of address.original_host.

  • address.toString()

Same as format().

  • address.address(newval=null, use_punycode=false)

Provides the email address in 'user@host' format.

If use_punycode = true, uses address.host instead of address.original_host.

License

This module is MIT licensed.

changelog

Changelog

The format is based on Keep a Changelog.

Unreleased

2.1.3 - 2025-01-31

  • dep(eslint): upgrade to v9
  • doc: mv Changes.md CHANGELOG.md
  • doc(CONTRIBUTORS): added
  • doc(Changes): fix markdown formatting (#50)
  • style: prettier

2.1.2 - 2024-02-23

  • load npm version of punycode (specify / after require)
  • dep(mocha): remove dev dep (installed by npx)
  • dep(punycode): bump 2.3.0 to 2.3.1

2.1.1 - 2023-08-22

  • feat: bundle grammar.js, build with prepack, fixes #46
  • ci: updated to latest
  • added .release
  • README: update badge URLs

2.0.1 - 2021-01-21

  • grammer.ne: add polyfill for Array.flat (#43)
  • restore compatibility with Node < 12
  • restore node 10 testing

2.0.0 - 2021-01-05

  • major version bump, nearley output requires node.js > 11
  • package.json: declare dependency on node >= 12

1.2.3 - 2021-01-05

  • revert nearley version in 1.x line, incompatible with node < 11

1.2.2 - 2021-01-05

  • package.json: remove spurious < character #37
  • README: update for es6 syntax #36

1.2.1 - 2021-01-01

  • The '+' character was mistakenly missing from atext/atom definition #31
  • package.json: tell npx the nearlyc package name #34

1.2.0 - 2020-12-25

  • Replace regular expression based parser with parser based on https://nearley.js.org/
  • Double quote characters are not stripped from the local-part of the address if present.
  • No added escaping is attempted inside quoted-strings

1.1.4 - 2020-12-14

  • packaging updates
  • replace Travis CI & AppVeyor for GH Actions

1.1.3 - 2018-05-11

  • change unicode regexps to not escape latin chars #15

1.1.2 - 2017-06-25

  • remove dev dependency versions

1.1.1

  • Fix a bug when using the constructor to generate an address

1.1.0

  • support IDN email addresses

1.0.0 - 2016-12-08

  • replaced null host or user values with empty strings