emile

[Images](https://youtube.com/watch?v=S70NaQqAfaw))
README


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.

Install
Published
28 Apr 2018
Sources
emile-0.3.tbz
md5=57c23427a11e5ac5a2e37f9b21477b0b
Dependencies
alcotest
with-test
fmt
>= "0.8.0"
uutf
>= "1.0.0"
ipaddr
>= "2.7.0"
angstrom
>= "0.9.0" & < "0.14.0"
jbuilder
>= "1.0+beta9"
ocaml
>= "4.03.0"
Reverse Dependencies
letters
= "0.1.1"