    class
    	SMTP_PROTOCOL

    General
    	cluster: mail
    	description: "Implementation of SMTP protocol."
    	create: make

    Ancestors
    	SENDING_PROTOCOL*

    Queries
    	Ack_begin_connection: INTEGER_32
    	Ack_end_connection: INTEGER_32
    	Can_be_received: BOOLEAN
    	Can_be_sent: BOOLEAN
    	Can_receive: BOOLEAN
    	Can_send: BOOLEAN
    	Data: STRING_8
    	Data_code: INTEGER_32
    	Default_headers: ARRAY [STRING_8]
    	Default_port: INTEGER_32
    	Ehlo: STRING_8
    	error: BOOLEAN
    	H_bcc: STRING_8
    	H_cc: STRING_8
    	H_from: STRING_8
    	H_reply_to: STRING_8
    	H_subject: STRING_8
    	H_to: STRING_8
    	header (h: STRING_8): HEADER
    	headers: HASH_TABLE [HEADER, STRING_8]
    	Helo: STRING_8
    	hostname: STRING_8
    	is_connected: BOOLEAN
    	is_header_valid: BOOLEAN
    	is_initiated: BOOLEAN
    	Mail_bcc: STRING_8
    	Mail_cc: STRING_8
    	Mail_from: STRING_8
    	Mail_reply_to: STRING_8
    	Mail_to: STRING_8
    	memory_resource: MEMORY_RESOURCE
    	No_valid_recipient: INTEGER_32
    	Ok: INTEGER_32
    	pipelining: BOOLEAN
    	Quit: STRING_8
    	Remote_error: INTEGER_32
    	Size_error: INTEGER_32
    	smtp_code_number: INTEGER_32
    	smtp_reply: STRING_8
    	Struct_error: INTEGER_32
    	Transfer_error: TRANSFER_ERROR

    Commands
    	close_protocol
    	disable_connected
    	disable_initiated
    	disable_pipelining
    	disable_transfer_error
    	enable_connected
    	enable_initiated
    	enable_pipelining
    	enable_transfer_error
    	initialize
    	initiate_protocol
    	make (host, user: STRING_8)
    	set_default_port (new_port: INTEGER_32)
    	set_transfer_error_message (s: STRING_8)
    	transfer (resource: MEMORY_RESOURCE)