package emile
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=607ce669b838d351c64295f17cba64ddd9c4e756b3a3a8facf4ff6d067d7307f
sha512=2c6b35dcd98bd8c040360a05317131c66277cbd41e1cd1af17c6dd806fe72b8e66f3f4cbbee3a1262b6d5308d9016783d01751cc81f764611a47b9f5a01d433c
Description
A parser of email address according RFC822, RFC2822, RFC5321 and RFC6532. It handles UTF-8 email addresses and encoded-word according RFC2047.
Published: 14 Mar 2020
README
Emile (& Images)
Emile is a library to parse an e-mail address in OCaml. This project is an extraction of mrmime.
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) without folding-whitespace.
Folding whitespace
According RFC 822, an e-mail address into an e-mail can be splitted by a folding-whitespace. However, this kind of form is not an usual case where user mostly wants to parse input from a form (for example). At the end, emile
is not able to parse this kind of input:
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)"
However, a pre-process (like unstrctrd) can fold input and give you an usual output. emile
can not be used into an e-mail context without this kind of pre-process.
Domain
Then, for domain part (explained on RFC 5321 - SMTP protocol), we handle this kind of domain (IPv4 and IPv6 domain) with ipaddr:
first.last@[12.34.56.78]
first.last@[IPv6:1111:2222:3333::4444:12.34.56.78]
It's possible to notify multiple domains for one local-part like this:
<@a.com,b.com:john@doe.com>
It's a valid form according RFC 882.
Comments
Even if we don't handle the folding-whitespace, we are able to discard comments.
a(a(b(c)d(e(f))g)h(i)j)@iana.org
Advise
If you think it's easy to parse an e-mail address, you should look tests.