Skip to content
& images
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Emile (& Images)

Build Status MirageOS

Emile is a library to parse an e-mail address in OCaml. This project is an extraction of MrMime - but we use Angstrom instead of an internal decoder.

This implementation follow some RFCs:

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>,,
 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 5321 - SMTP protocol), we handle this kind of domain:


The parser of IPv* is done by Ipaddr. As a old specification, we handle multiple-domains like:


Obviously, we handle (nested) comments:


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 hands.


If you think it's easy to parse an e-mail address, you should look tests.

You can’t perform that action at this time.