# Class Netpop.client

    class client : Netchannels.in_obj_channel -> Netchannels.out_obj_channel -> object .. end

The class `client` implements the POP3 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.

    method state : state

Current state of this session.

    method capabilities : (string * string list) list

The result of the last `capa` command

    method capa : unit -> (string * string list) list

Requests a list of capabilities (RFC 2449). Returns the empty list if `capa` is not understood.

    method quit : unit -> unit

Requests the server to end this session. If the session is currently in the ``Transaction` state, the server will attempt to remove all messages marked as deleted before closing its side of the connection.

    method close : unit -> unit

Closes the file descriptors

    method user : user:string -> unit

Specifies the name of the mailbox the client would like to open using plain-text authentication. Normal completion of this function should be followed by the `pass` command.

    method pass : pass:string -> unit

Authenticates a user with the plain-text password `pass`.

    method apop : user:string -> pass:string -> unit

Specifies the user and password using APOP authentication. APOP is a more secure method of authentication than what is provided by the `user`/`pass` command sequence.

    method auth : Netsys_sasl.sasl_mechanism ->
           string ->
           string -> Netsys_sasl.credentials -> (string * string * bool) list -> unit

`auth mech user authz creds params`: Performs a SASL authentication using the AUTH command (RFC 5034). See `Netsys_sasl.Client.create_session` for details about SASL.

Example:

    client # auth
      (module Netmech_digest_sasl.DIGEST_MD5)
      "user"
      ""
      [ "password", "sEcReT", [] ]
      []

    method stat : unit -> int * int * string

Returns information about the current mailbox as tuple `(count,size,ext)` where `count` is the number of messages in the mailbox, `size` is the size of the mailbox in octets, and `ext` is any server extension data.

    method list : ?msgno:int -> unit -> (int, int * string) Stdlib.Hashtbl.t

Returns the scan listing for an optional message number or for all messages in the current mailbox. The result is a hash table that maps a message number to a tuple `(size,ext)` where `size` is the size of the message in octets, and `ext` is any server extension data.

    method retr : msgno:int -> Netchannels.in_obj_channel

Retrieves a message from the server.

    method dele : msgno:int -> unit

Marks the message number of the current mailbox for deletion.

    method noop : unit -> unit

Pings the server to keep the session alive.

    method rset : unit -> unit

Unmarks any messages that have previously been marked as deleted.

    method top : ?lines:int -> msgno:int -> unit -> Netchannels.in_obj_channel

Returns the message header plus a limited number of lines of the message body. The default body length is 0 lines.

    method uidl : ?msgno:int -> unit -> (int, string) Stdlib.Hashtbl.t

Returns the unique identifier(s) for an optional message number or for all messages in the current mailbox. The result is a hash table that maps a message number to its unique id.

    method stls : peer_name:string option -> Netsys_crypto_types.tls_config -> unit

Sends STLS (STARTTLS), and negotiates a secure connection. Raises `Err_state` if TLS is unavailable on the server.

STLS is specified in RFC 2595.

    method tls_endpoint : Netsys_crypto_types.tls_endpoint option

Returns the TLS endpoint (after `STARTTLS`)

    method tls_session_props : Nettls_support.tls_session_props option

Returns the TLS session properties (after `STARTTLS`)

    method gssapi_props : Netsys_gssapi.client_props option

Returns GSSAPI properties, if available