Documentation

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
author

Michael Slusarz slusarz@horde.org

category

Horde

copyright

2013-2017 Horde LLC

license

http://www.horde.org/licenses/lgpl21 LGPL 2.1

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.

logout()

Logout from the SMTP server.

public logout() : mixed
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
throws
Horde_Smtp_Exception
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).

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
throws
Horde_Smtp_Exception
throws
Horde_Smtp_Exception_Recipients
throws
InvalidArgumentException
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
throws
Horde_Smtp_Exception
Return values
mixed

_getEncryptKey()

Get encryption key.

protected _getEncryptKey() : string
Tags
deprecated
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
throws
Horde_Smtp_Exception
Return values
array<string|int, mixed>

An array with the response text.

_hello()

Send "Hello" command to the server.

protected _hello() : mixed
Tags
throws
Horde_Smtp_Exception
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
see
_send()
throws
Horde_Smtp_Exception
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
throws
Horde_Smtp_Exception
Return values
bool

True if TLS was started.

Search results