package emile
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=8a560f3c030e241c1a09deb3da179f37257c905ad03d2dd67bfd48172470c793
md5=57c23427a11e5ac5a2e37f9b21477b0b
Description
Emile is a library to parse an e-mail address in OCaml. This project is an extraction of MrMime - but we use Angstrom instead an internal decoder.
This implementation follow some RFCs:
- RFC 822
- RFC 2822
- RFC 5321 (domain part)
- RFC 5322
- RFC 6532
We handle UTF-8 (RFC 6532), domain defined on the SMTP protocol (RFC 5321), and general e-mail address purpose (RFC 822, RFC 2822, RFC 5322) including folding-whitespace.
The last means we can parse something like:
A Group(Some people)
:Chris Jones <c@(Chris's host.)public.example>,
joe@example.org,
John <jdoe@one.test> (my dear friend); (the end of the group)"
For a general purpose, it's not needed and is close e-mail purpose.
Then, for domain part (explained on RFC 6532 - SMTP protocol), we handle this kind of domain:
first.last@[12.34.56.78]
first.last@[IPv6:1111:2222:3333::4444:12.34.56.78]
The parser of IPv* is done by Ipaddr. As a old specification, we handle multiple-domains like:
<@a.com,b.com:john@doe.com>
Obviously, we handle (nested) comments:
a(a(b(c)d(e(f))g)h(i)j)@iana.org
All parsers are binded with a comment which explain where you can find the ABNF description and some notes about implementation. All was check by hand.
Published: 28 Apr 2018
README
Emile (& Images)
Emile is a library to parse an e-mail address in OCaml. This project is an extraction of MrMime - but we use Angstrom instead an internal decoder.
This implementation follow some RFCs:
RFC 822
RFC 2822
RFC 5321 (domain part)
RFC 5322
RFC 6532
We handle UTF-8 (RFC 6532), domain defined on the SMTP protocol (RFC 5321), and general e-mail address purpose (RFC 822, RFC 2822, RFC 5322) including folding-whitespace.
The last means we can parse something like:
A Group(Some people)
:Chris Jones <c@(Chris's host.)public.example>,
joe@example.org,
John <jdoe@one.test> (my dear friend); (the end of the group)"
For a general purpose, it's not needed and is close e-mail purpose.
Then, for domain part (explained on RFC 6532 - SMTP protocol), we handle this kind of domain:
first.last@[12.34.56.78]
first.last@[IPv6:1111:2222:3333::4444:12.34.56.78]
The parser of IPv* is done by Ipaddr. As a old specification, we handle multiple-domains like:
<@a.com,b.com:john@doe.com>
Obviously, we handle (nested) comments:
a(a(b(c)d(e(f))g)h(i)j)@iana.org
All parsers are binded with a comment which explain where you can find the ABNF description and some notes about implementation. All was check by hand.