Horde_Smtp
in package
implements
Serializable
An interface to an SMTP server (RFC 5321).
Implements the following SMTP-related RFCs:
- RFC 1870/STD 10: Message Size Declaration - RFC 1985: SMTP Service Extension for Remote Message Queue Starting - RFC 2034: Enhanced-Status-Codes - RFC 2195: CRAM-MD5 (SASL Authentication) - RFC 2595/4616: TLS & PLAIN (SASL Authentication) - RFC 2831: DIGEST-MD5 authentication mechanism (obsoleted by RFC 6331) - RFC 2920/STD 60: Pipelining - RFC 3030: SMTP Service Extensions for Transmission of Large and Binary MIME Messages - RFC 3207: Secure SMTP over TLS - RFC 3463: Enhanced Mail System Status Codes - RFC 4422: SASL Authentication (for DIGEST-MD5) - RFC 4954: Authentication - RFC 5321: Simple Mail Transfer Protocol - RFC 6152/STD 71: 8bit-MIMEtransport - RFC 6409/STD 72: Message Submission for Mail - RFC 6531: Internationalized Email - XOAUTH2: https://developers.google.com/gmail/xoauth2_protocol
TODO:
- RFC 1845: CHECKPOINT - RFC 2852: DELIVERYBY - RFC 3461: DSN - RFC 3865: NO-SOLICITING - RFC 3885: MTRK - RFC 4141: CONPERM/CONNEG - RFC 4405: SUBMITTER - RFC 4468: BURL - RFC 4865: FUTURERELEASE - RFC 6710: MT-PRIORITY - RFC 7293: RRVS
Tags
Interfaces, Classes, Traits and Enums
- Serializable
Table of Contents
- CHUNK_DEFAULT = 1048576
- $data_8bit : bool
- $data_binary : bool
- $data_intl : bool
- $size : int
- $_connection : Horde_Smtp_Connection
- Connection to the SMTP server.
- $_debug : Horde_Smtp_Debug
- The debug object.
- $_ehlo : string
- The hello command to use for extended SMTP support.
- $_extensions : array<string|int, mixed>
- The list of ESMTP extensions.
- $_params : array<string|int, mixed>
- Hash containing connection parameters.
- $_requiredExts : array<string|int, mixed>
- List of required ESMTP extensions.
- __clone() : mixed
- This object can not be cloned.
- __construct() : mixed
- Constructor.
- __get() : mixed
- getParam() : mixed
- Returns a value from the internal params array.
- isSecureConnection() : bool
- Display if connection to the server has been secured via TLS or SSL.
- login() : mixed
- Connect/login to the SMTP server.
- logout() : mixed
- Logout from the SMTP server.
- noop() : mixed
- Send a NOOP command.
- processQueue() : mixed
- Send request to process the remote queue.
- queryExtension() : mixed
- Returns whether the SMTP server supports the given extension.
- resetCmd() : mixed
- Send a reset command.
- send() : array<string|int, mixed>
- Send a message.
- serialize() : mixed
- setParam() : mixed
- Sets a configuration parameter value.
- shutdown() : mixed
- Shutdown actions.
- unserialize() : mixed
- _auth() : mixed
- Authenticate user to server for a given method.
- _getEncryptKey() : string
- Get encryption key.
- _getHostname() : string
- Return the local hostname.
- _getResponse() : array<string|int, mixed>
- Gets a line from the incoming stream and parses it.
- _hello() : mixed
- Send "Hello" command to the server.
- _initOb() : mixed
- Do initialization tasks.
- _processData() : array<string|int, mixed>
- Process the return from the DATA command.
- _startTls() : bool
- Starts the TLS connection to the server, if necessary. See RFC 3207.
Constants
CHUNK_DEFAULT
public
mixed
CHUNK_DEFAULT
= 1048576
Properties
$data_8bit read-only
public
bool
$data_8bit
Does server support sending 8-bit MIME data?
$data_binary read-only
public
bool
$data_binary
Does server support sending binary MIME data? (@since 1.7.0)
$data_intl read-only
public
bool
$data_intl
Does server support sending internationalized (UTF-8) header data? (@since 1.6.0)
$size read-only
public
int
$size
The maximum message size supported (in bytes) or null if this cannot be determined.
$_connection
Connection to the SMTP server.
protected
Horde_Smtp_Connection
$_connection
$_debug
The debug object.
protected
Horde_Smtp_Debug
$_debug
$_ehlo
The hello command to use for extended SMTP support.
protected
string
$_ehlo
= 'EHLO'
$_extensions
The list of ESMTP extensions.
protected
array<string|int, mixed>
$_extensions
= \null
If this value is null, we have not connected to server yet.
$_params
Hash containing connection parameters.
protected
array<string|int, mixed>
$_params
= array()
$_requiredExts
List of required ESMTP extensions.
protected
array<string|int, mixed>
$_requiredExts
= array()
Methods
__clone()
This object can not be cloned.
public
__clone() : mixed
Return values
mixed —__construct()
Constructor.
public
__construct([array<string|int, mixed> $params = array() ]) : mixed
Parameters
- $params : array<string|int, mixed> = array()
-
Configuration parameters:
- chunk_size: (integer) If CHUNKING is supported on the server, the chunk size (in octets) to send. 0 will disable chunking. @since 1.7.0
- context: (array) Any context parameters passed to stream_create_context(). @since 1.9.0
- debug: (string) If set, will output debug information to the stream provided. The value can be any PHP supported wrapper that can be opened via fopen(). DEFAULT: No debug output
- host: (string) The SMTP server. DEFAULT: localhost
- localhost: (string) The hostname of the localhost. (since 1.9.0) DEFAULT: Auto-determined.
- password: (mixed) The SMTP password or a Horde_Smtp_Password object (since 1.1.0). DEFAULT: NONE
- port: (string) The SMTP port. DEFAULT: 587 (See RFC 6409/STD 72)
- secure: (string) Use SSL or TLS to connect.
DEFAULT: true (use 'tls' option, if available)
- false (No encryption)
- 'ssl' (Auto-detect SSL version)
- 'sslv2' (Force SSL version 2)
- 'sslv3' (Force SSL version 3)
- 'tls' (TLS; started via protocol-level negotation over unencrypted channel; RECOMMENDED way of initiating secure connection)
- 'tlsv1' (TLS direct version 1.x connection to server) [@since 1.3.0]
- true (Use TLS, if available) [@since 1.2.0]
- timeout: (integer) Connection timeout, in seconds. DEFAULT: 30 seconds
- username: (string) The SMTP username. DEFAULT: NONE
- xoauth2_token: (string) If set, will authenticate via the XOAUTH2 mechanism (if available) with this token. Either a string or a Horde_Smtp_Password object (since 1.1.0).
Return values
mixed —__get()
public
__get(mixed $name) : mixed
Parameters
- $name : mixed
Return values
mixed —getParam()
Returns a value from the internal params array.
public
getParam(string $key) : mixed
Parameters
- $key : string
-
The param key.
Return values
mixed —The param value, or null if not found.
isSecureConnection()
Display if connection to the server has been secured via TLS or SSL.
public
isSecureConnection() : bool
Return values
bool —True if the SMTP connection is secured.
login()
Connect/login to the SMTP server.
public
login() : mixed
Tags
Return values
mixed —logout()
Logout from the SMTP server.
public
logout() : mixed
Return values
mixed —noop()
Send a NOOP command.
public
noop() : mixed
Tags
Return values
mixed —processQueue()
Send request to process the remote queue.
public
processQueue([string $host = null ]) : mixed
Parameters
- $host : string = null
-
The specific host to request queue processing for.
Tags
Return values
mixed —queryExtension()
Returns whether the SMTP server supports the given extension.
public
queryExtension(string $ext) : mixed
Parameters
- $ext : string
-
The extension to query.
Return values
mixed —False if the server doesn't support the extension; otherwise, the extension value (returns true if the extension only supports existence).
resetCmd()
Send a reset command.
public
resetCmd() : mixed
Tags
Return values
mixed —send()
Send a message.
public
send(mixed $from, mixed $to, mixed $data[, array<string|int, mixed> $opts = array() ]) : array<string|int, mixed>
Parameters
- $from : mixed
-
The from address. Either a Horde_Mail_Rfc822_Address object or a string.
- $to : mixed
-
The to (recipient) addresses. Either a Horde_Mail_Rfc822_List object, a string, or an array of addresses.
- $data : mixed
-
The data to send. Either a stream or a string.
- $opts : array<string|int, mixed> = array()
Tags
Return values
array<string|int, mixed> —If no receipients were successful, a Horde_Smtp_Exception will be thrown. If at least one recipient was successful, an array with the following format is returned: (@since 1.5.0)
- KEYS: Recipient addresses ($to addresses).
- VALUES: Boolean true (if message was accepted for this recpieint) or a Horde_Smtp_Exception (if messages was not accepted).
serialize()
public
serialize() : mixed
Return values
mixed —setParam()
Sets a configuration parameter value.
public
setParam(string $key, mixed $val) : mixed
Parameters
- $key : string
-
The param key.
- $val : mixed
-
The param value.
Return values
mixed —shutdown()
Shutdown actions.
public
shutdown() : mixed
Return values
mixed —unserialize()
public
unserialize(mixed $data) : mixed
Parameters
- $data : mixed
Return values
mixed —_auth()
Authenticate user to server for a given method.
protected
_auth(string $method) : mixed
Parameters
- $method : string
-
Authentication method.
Tags
Return values
mixed —_getEncryptKey()
Get encryption key.
protected
_getEncryptKey() : string
Tags
Return values
string —The encryption key.
_getHostname()
Return the local hostname.
protected
_getHostname() : string
Return values
string —Local hostname (null if it cannot be determined).
_getResponse()
Gets a line from the incoming stream and parses it.
protected
_getResponse(mixed $code[, array<string|int, mixed> $opts = array() ]) : array<string|int, mixed>
Parameters
- $code : mixed
-
Expected reply code(s) (integer or array).
- $opts : array<string|int, mixed> = array()
-
Additional options:
- error: (string) On error, 'logout' or 'reset'? - exception: (string) Throw an exception of this class on error.
Tags
Return values
array<string|int, mixed> —An array with the response text.
_hello()
Send "Hello" command to the server.
protected
_hello() : mixed
Tags
Return values
mixed —_initOb()
Do initialization tasks.
protected
_initOb() : mixed
Return values
mixed —_processData()
Process the return from the DATA command.
protected
_processData(array<string|int, mixed> $recipients) : array<string|int, mixed>
Parameters
- $recipients : array<string|int, mixed>
-
The list of message recipients.
Tags
Return values
array<string|int, mixed> —See _send().
_startTls()
Starts the TLS connection to the server, if necessary. See RFC 3207.
protected
_startTls() : bool
Tags
Return values
bool —True if TLS was started.