/
mail.mli
48 lines (41 loc) · 2.26 KB
/
mail.mli
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
(***********************************************************************)
(* *)
(* SpamOracle -- a Bayesian spam filter *)
(* *)
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
(* *)
(* Copyright 2002 Institut National de Recherche en Informatique et *)
(* en Automatique. This file is distributed under the terms of the *)
(* GNU Public License version 2, http://www.gnu.org/licenses/gpl.txt *)
(* *)
(***********************************************************************)
(* $Id$ *)
(** Parsing of e-mail messages, including attachments *)
type message =
{ headers: (string * string) list;
body: string;
parts: message list }
(** The type of parsed e-mail messages.
- [headers] is an A-list of pairs [(header-name, header-content)].
[header-name] is lowercased and includes [:], e.g. [subject:].
- [body] is the body of the message. Base64 and quoted-printable
encodings are already decoded. For multipart messages, [body]
is the initial blurb before the first part.
- [parts] is empty except for multipart messages, in which case
it lists all parts, recursively represented as messages. *)
val parse_message: string -> message
(** Parse the given textual message and return its structure. *)
val header: string -> message -> string
(** [header h msg] returns the contents of header named [h]
in message [msg], or the empty string if this header is missing.
Remember that header names are lowercased and include the final [:],
e.g. [subject:]. *)
val iter_text_parts: (message -> unit) -> message -> unit
(** [iter_text_parts fn msg] applies [fn] to every (sub-)message
contained in [msg] that is of type text. *)
val iter_message: (string -> unit) -> message -> unit
(** [iter_message fn msg] applies [fn] to the following parts of
message [msg]:
- the headers that match [!Config.mail_headers];
- the body of every sub-message of [msg] that is of type text.
*)