ocaml-maildir
ocaml-maildir copied to clipboard
OCaml library to access Maildir folders
ocaml-maildir
This is a preliminary release of an OCaml library to access directories in the Maildir format.
Installation
-
Download the current version of
ocaml-maildir
.cd ~/tmp git clone https://github.com/nojb/ocaml-maildir
-
Configure, build and install
cd ocaml-maildir make
-
Read the documentation in
lib/maildir.mli
.
Usage
First we have to load the library.
# #use "topfind";;
- : unit = ()
# #require "maildir";;
Create a brand new Maildir folder
The option argument ~init:true
will cause the folder to be created if it does
not exist already. Omit the argument or pass false
to skip folder creation.
# let md = Maildir.create ~init:true "Maildir";;
val md : Maildir.t = <abstr>
The object md
keeps an in-memory index of the contents of the Maildir folder
contents. This index can become out-of-date if another program is accessing the
same Maildir folder. Whenever we want to update the index, we can do so by
calling Maildir.update md
.
Add a new message
This creates a new file with the contents "Hello World!"; returns a unique name
that identifies this message. Messages are written to the tmp
subdir and then
moved to new
.
# let uid = Maildir.add md "Hello, World!";;
val uid : string = "1394354127.R2ee8b87P28044Q0.lapc-br1-081.maths.private.cam.ac.uk"
A newly arrived message only has one flag, NEW
:
# Maildir.flags md uid;;
- : Maildir.flag list = [Maildir.NEW]
Messages that have the NEW
flag reside in the new
subdirectory:
$ ls Maildir/*
Maildir/cur:
Maildir/new:
1394354127.R2ee8b87P28044Q0.lapc-br1-081.maths.private.cam.ac.uk
Maildir/tmp:
Change message flags
If we remove the NEW
flag, then the message will transparently be moved to the
cur
subdir. It will be moved back if we add the flag back.
# Maildir.set_flags md uid [Maildir.FLAGGED; Maildir.SEEN];;
- : unit = ()
We can check that the message has been moved to the cur
subdir and the
filename now indicates the corresponding flags.
$ ls Maildir/*
Maildir/cur:
1394354127.R2ee8b87P28044Q0.lapc-br1-081.maths.private.cam.ac.uk:2,FS
Maildir/new:
Maildir/tmp:
Remove message
Finally we remove the message
# Maildir.remove md uid;;
- : unit = ()
We can check that the file has disappeared:
$ ls Maildir/*
Maildir/cur:
Maildir/new:
Maildir/tmp:
Comments
Comments, bug reports and feature requests are very welcome: [email protected].