Did you know ... Search Documentation:
Pack logtalk -- logtalk-3.102.0/docs/apis/_sources/smtp_protocol_0.rst.txt

.. index:: single: smtp_protocol .. _smtp_protocol/0:

.. rst-class:: right

protocol

smtp_protocol

Protocol for portable SMTP clients.

| Availability: | logtalk_load(smtp(loader))

| Author: Paulo Moura | Version: 1:0:0 | Date: 2026-09-11

| Compilation flags: | static

| Dependencies: | (none)

| Remarks: | (none)

| Inherited public predicates: | (none)

.. contents:: :local: :backlinks: top

Public predicates

.. index:: send/5 .. _smtp_protocol/0::send/5:

send/5 ^^^^^^^^^^

Opens an SMTP session, sends a message, and closes the session. Unicode Subject and Comments header values are serialized as RFC 2047 UTF-8 Base64 encoded words; all other header values must be ASCII.

| Compilation flags: | static

| Template: | send(Host,Port,Message,Result,Options) | Mode and number of proofs: | send(+atom,+integer,+compound,--compound,+list) - one_or_error

| Exceptions: | Host or Port is a variable: | instantiation_error | Host is neither a variable nor an atom: | type_error(atom,Host) | Port is neither a variable nor an integer: | type_error(integer,Port) | Port is an integer but not positive: | domain_error(positive_integer,Port) | Message is not an SMTP message term: | domain_error(smtp_message,Message) | The envelope sender or a recipient is a variable: | instantiation_error | The envelope sender or a recipient is neither a variable nor an atom: | type_error(atom,Mailbox) | The envelope sender or a recipient is not a valid mailbox: | domain_error(smtp_mailbox,Mailbox) | Recipients is not a non-empty list of mailboxes or a mailbox atom: | domain_error(smtp_recipients,Recipients) | Headers is not a list: | type_error(list,Headers) | A header name or value is a variable: | instantiation_error | A header name or value is neither a variable nor an atom: | type_error(atom,HeaderComponent) | Header is not a valid header pair: | domain_error(smtp_header,Header) | Body is not a supported text representation: | domain_error(smtp_body,Body) | A caller-supplied MIME header conflicts with UTF-8 Base64 serialization or duplicates another MIME header: | domain_error(smtp_mime_header,Header) | Options is a variable: | instantiation_error | Options is neither a variable nor a list: | type_error(list,Options) | An element Option of the list Options is a variable: | instantiation_error | An element Option of the list Options is neither a variable nor a compound term: | type_error(compound,Option) | An element Option of the list Options is a compound term but not a valid option: | domain_error(option,Option) | The SMTP connection cannot be opened: | smtp_error(connection_failed) | OpenSSL terminates the secure connection while an SMTP response is expected: | smtp_error(secure_connection_failed(Status,Diagnostic)) | The SMTP server closes the connection while a response is expected at Stage: | smtp_error(connection_closed(Stage)) | The SMTP server rejects the session greeting: | smtp_error(greeting_failed(Code,Lines)) | The SMTP server returns an invalid or unexpected response: | smtp_error(protocol_error(Response)) | Authentication is requested over an insecure connection without explicit permission: | permission_error(authenticate,insecure_smtp_connection,plain) | The SMTP server does not advertise a supported authentication mechanism: | smtp_error(authentication_not_supported) | The SMTP server rejects authentication: | smtp_error(auth_failed(Code,Lines)) | The SMTP server rejects the envelope sender: | smtp_error(sender_rejected(Code,Lines)) | The SMTP server rejects the DATA command or the submitted message: | smtp_error(send_failed(Code,Lines))


.. index:: connect/4 .. _smtp_protocol/0::connect/4:

connect/4 ^^^^^^^^^^^^^

Opens an SMTP session for sending one or more messages.

| Compilation flags: | static

| Template: | connect(Host,Port,Connection,Options) | Mode and number of proofs: | connect(+atom,+integer,--compound,+list) - one_or_error

| Exceptions: | Host or Port is a variable: | instantiation_error | Host is neither a variable nor an atom: | type_error(atom,Host) | Port is neither a variable nor an integer: | type_error(integer,Port) | Port is an integer but not positive: | domain_error(positive_integer,Port) | Options is a variable: | instantiation_error | Options is neither a variable nor a list: | type_error(list,Options) | An element Option of the list Options is a variable: | instantiation_error | An element Option of the list Options is neither a variable nor a compound term: | type_error(compound,Option) | An element Option of the list Options is a compound term but not a valid option: | domain_error(option,Option) | Option is valid but is not a connection option: | domain_error(smtp_connection_option,Option) | The SMTP connection cannot be opened: | smtp_error(connection_failed) | OpenSSL terminates the secure connection while an SMTP response is expected: | smtp_error(secure_connection_failed(Status,Diagnostic)) | The SMTP server closes the connection while a response is expected at Stage: | smtp_error(connection_closed(Stage)) | The SMTP server rejects the session greeting: | smtp_error(greeting_failed(Code,Lines)) | The SMTP server returns an invalid or unexpected response: | smtp_error(protocol_error(Response)) | Authentication is requested over an insecure connection without explicit permission: | permission_error(authenticate,insecure_smtp_connection,plain) | The SMTP server does not advertise a supported authentication mechanism: | smtp_error(authentication_not_supported) | The SMTP server rejects authentication: | smtp_error(auth_failed(Code,Lines))


.. index:: disconnect/1 .. _smtp_protocol/0::disconnect/1:

disconnect/1 ^^^^^^^^^^^^^^^^

Gracefully closes an SMTP session.

| Compilation flags: | static

| Template: | disconnect(Connection) | Mode and number of proofs: | disconnect(+compound) - one_or_error

| Exceptions: | Connection is not an open SMTP connection handle: | domain_error(smtp_connection,Connection)


.. index:: connection_alive/1 .. _smtp_protocol/0::connection_alive/1:

connection_alive/1 ^^^^^^^^^^^^^^^^^^^^^^

Checks if the local streams for an SMTP connection are open.

| Compilation flags: | static

| Template: | connection_alive(Connection) | Mode and number of proofs: | connection_alive(+compound) - zero_or_one


.. index:: send/4 .. _smtp_protocol/0::send/4:

send/4 ^^^^^^^^^^

Sends a message over an open SMTP session. Unicode Subject and Comments header values are serialized as RFC 2047 UTF-8 Base64 encoded words; all other header values must be ASCII.

| Compilation flags: | static

| Template: | send(Connection,Message,Result,Options) | Mode and number of proofs: | send(+compound,+compound,--compound,+list) - one_or_error

| Exceptions: | Connection is not an open SMTP connection handle: | domain_error(smtp_connection,Connection) | Message is not an SMTP message term: | domain_error(smtp_message,Message) | The envelope sender or a recipient is a variable: | instantiation_error | The envelope sender or a recipient is neither a variable nor an atom: | type_error(atom,Mailbox) | The envelope sender or a recipient is not a valid mailbox: | domain_error(smtp_mailbox,Mailbox) | Recipients is not a non-empty list of mailboxes or a mailbox atom: | domain_error(smtp_recipients,Recipients) | Headers is not a list: | type_error(list,Headers) | A header name or value is a variable: | instantiation_error | A header name or value is neither a variable nor an atom: | type_error(atom,HeaderComponent) | Header is not a valid header pair: | domain_error(smtp_header,Header) | Body is not a supported text representation: | domain_error(smtp_body,Body) | A caller-supplied MIME header conflicts with UTF-8 Base64 serialization or duplicates another MIME header: | domain_error(smtp_mime_header,Header) | Options is a variable: | instantiation_error | Options is neither a variable nor a list: | type_error(list,Options) | An element Option of the list Options is a variable: | instantiation_error | An element Option of the list Options is neither a variable nor a compound term: | type_error(compound,Option) | An element Option of the list Options is a compound term but not a valid option: | domain_error(option,Option) | Option is valid but is not a transaction option: | domain_error(smtp_transaction_option,Option) | The SMTP server closes the connection while a response is expected at Stage: | smtp_error(connection_closed(Stage)) | The SMTP server returns an invalid or unexpected response: | smtp_error(protocol_error(Response)) | The SMTP server rejects the envelope sender: | smtp_error(sender_rejected(Code,Lines)) | The SMTP server rejects the DATA command or the submitted message: | smtp_error(send_failed(Code,Lines))


Protected predicates

(none)

Private predicates

(none)

Operators

(none)