val reply_line : string -> (int * bool * string) optionval reply : int -> string list -> string listtype command = | Helo of string| Ehlo of string| Mail_from of string| Rcpt_to of string| Data| Rset| Noop| Quit| Unknown of string
val parse_command : string -> commandval command_to_string : command -> stringtype envelope = {sender : string;recipients : string list;text : string;
}val stuff : string -> string listval unstuff : string list -> stringtype outcome = | Sent of int * string list| Refused of string
val client : hello:string -> ?auth:(string * string) -> envelope list -> clientval plain : user:string -> password:string -> stringval finished : client -> (outcome list, string) Stdlib.result option