All Projects → mirage → emile

mirage / emile

Licence: MIT license
& images

Programming Languages

ocaml
1615 projects

Projects that are alternatives of or similar to emile

Nodemailer
✉️ Send e-mails with Node.JS – easy as cake!
Stars: ✭ 14,354 (+49396.55%)
Mutual labels:  rfc822
ESP-Mail-Client
⚡️Arduino Mail Client Library to send, read and get incoming mail notification for ESP32, ESP8266 and SAMD21 devices. The library also supported other Arduino devices using Clients interfaces e.g. WiFiClient, EthernetClient, and GSMClient.
Stars: ✭ 78 (+168.97%)
Mutual labels:  rfc822
typebeat
Parsing of the Content-Type header in pure OCaml
Stars: ✭ 20 (-31.03%)
Mutual labels:  rfc822
Brimir
Email helpdesk built using Ruby on Rails and Zurb Foundation
Stars: ✭ 1,404 (+4741.38%)
Mutual labels:  e-mail
Mailpile
A free & open modern, fast email client with user-friendly encryption and privacy features
Stars: ✭ 8,533 (+29324.14%)
Mutual labels:  e-mail
RunningLow
Free PowerShell script to to check for low disk space on local and network drives and send e-mail alerts when it goes under a user-defined quota.
Stars: ✭ 17 (-41.38%)
Mutual labels:  e-mail
go-mailer
📫 Simple e-mail sender for Go Programming Language
Stars: ✭ 31 (+6.9%)
Mutual labels:  e-mail
convey
CSV processing and web related data types mutual conversion
Stars: ✭ 16 (-44.83%)
Mutual labels:  e-mail
mnm-hammer
mnm implements TMTP protocol. Let Internet sites message members directly, instead of unreliable, insecure email. Contributors welcome! (Client)
Stars: ✭ 66 (+127.59%)
Mutual labels:  e-mail
Mail Mime
Create MIME messages with PHP
Stars: ✭ 42 (+44.83%)
Mutual labels:  e-mail

Emile (& Images)

Build Status MirageOS

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>,
     [email protected],
 John <[email protected]> (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:[email protected]>

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].