module Netsmtp

: sig

This is an interface for the Simple Mail Tranfer Protocol (SMTP) as specified by RFC 2821.

exception Protocol_error
exception Transient_error of int * string
exception Permanent_error of int * string
val tcp_port : int

default TCP port for SMTP

The class client implements the SMTP protocol. Client objects are created by

new client in_ch out_ch

where in_ch is an input channel representing the input direction of the TCP stream, and where out_ch is an output channel representing the output direction of the TCP stream.

class client : Netchannels.in_obj_channel -> Netchannels.out_obj_channel ->
method helo : ?host:string -> unit -> string list

Sends an HELLO command to the server. the optionnal argument ?host defaults to the default hostname of the machine. This function returns the ESMTP lines returned by the server.

method mail : string -> unit

Performs a MAIL FROM command. the string argument is the mail address (without < >) that sends the mail.

method rcpt : string -> unit

Performs a RCPT TO command. the string argument is one of the mail address the mail has to be sent to. You have to use that function for each recipient of the mail.

If the server returns a 551 error (user relocated, see RFC 2821, section 3.4), the relocated adress is silently used, and the error is not raised

method data : Netchannels.in_obj_channel -> unit

This method really send the mail. Do not issue that command without having used mail once, and at least rcpt once too

method rset : unit -> unit

Reset the current transaction

method expn : string -> string list option

Expand command : expn list will try to expand the Mailing list list. If the list cannot be Expanded (reply 252) then None is returned.

method help : unit -> string list

Performs the Help command. Returns the server multiline answer.

method noop : unit -> unit

NOOP : does nothing, keeps the connection alive.

method quit : unit -> unit

Requests the server to end this session.