PHP RFC821 SMTP client

Implements all the RFC 821 SMTP commands except TURN which will always return a not implemented error. SMTP also provides some utility methods for sending mail to an SMTP server.

author | Chris Ryan
package | PHPMailer

### Methods

## Performs SMTP authentication.

    Authenticate(string $username, string $password, string $authtype, string $realm, string $workstation) : bool

Must be run after running the Hello() method. Returns true if successfully authenticated.

access | public

### Parameters

#### $username

`string`

#### $password

`string`

#### $authtype

`string`

#### $realm

`string`

#### $workstation

`string`

### Returns

`bool`

## Closes the socket and cleans up the state of the class.

    Close() : void

It is not considered good to use this function without first trying to use QUIT.

access | public

## Connect to the server specified on the port specified.

    Connect(string $host, int $port, int $tval) : bool

If the port is not specified use the default SMTP_PORT. If tval is specified then a connection will try and be established with the server for that number of seconds. If tval is not specified the default is 30 seconds to try on the connection.

SMTP CODE SUCCESS: 220 SMTP CODE FAILURE: 421

access | public

### Parameters

#### $host

`string`

#### $port

`int`

#### $tval

`int`

### Returns

`bool`

## Returns true if connected to a server otherwise false

    Connected() : bool

access | public

### Returns

`bool`

## Issues a data command and sends the msg_data to the server finializing the mail transaction.

    Data(string $msg_data) : bool

$msg_data is the message that is to be send with the headers. Each header needs to be on a single line followed by a <CRLF> with the message headers and the message body being seperated by and additional <CRLF>.

Implements rfc 821: DATA <CRLF>

SMTP CODE INTERMEDIATE: 354 [data] <CRLF>.<CRLF> SMTP CODE SUCCESS: 250 SMTP CODE FAILURE: 552,554,451,452 SMTP CODE FAILURE: 451,554 SMTP CODE ERROR : 500,501,503,421

access | public

### Parameters

#### $msg_data

`string`

### Returns

`bool`

## Sends the HELO command to the smtp server.

    Hello(string $host) : bool

This makes sure that we and the server are in the same known state.

Implements from rfc 821: HELO <SP> <domain> <CRLF>

SMTP CODE SUCCESS: 250 SMTP CODE ERROR : 500, 501, 504, 421

access | public

### Parameters

#### $host

`string`

### Returns

`bool`

## Starts a mail transaction from the email address specified in $from.

    Mail(string $from) : bool

Returns true if successful or false otherwise. If True the mail transaction is started and then one or more Recipient commands may be called followed by a Data command.

Implements rfc 821: MAIL <SP> FROM: <CRLF>

SMTP CODE SUCCESS: 250 SMTP CODE SUCCESS: 552,451,452 SMTP CODE SUCCESS: 500,501,421

access | public

### Parameters

#### $from

`string`

### Returns

`bool`

## Sends the quit command to the server and then closes the socket if there is no error or the $close_on_error argument is true.

    Quit(bool $close_on_error) : bool

Implements from rfc 821: QUIT <CRLF>

SMTP CODE SUCCESS: 221 SMTP CODE ERROR : 500

access | public

### Parameters

#### $close_on_error

`bool`

### Returns

`bool`

## Sends the command RCPT to the SMTP server with the TO: argument of $to.

    Recipient(string $to) : bool

Returns true if the recipient was accepted false if it was rejected.

Implements from rfc 821: RCPT <SP> TO: <CRLF>

SMTP CODE SUCCESS: 250,251 SMTP CODE FAILURE: 550,551,552,553,450,451,452 SMTP CODE ERROR : 500,501,503,421

access | public

### Parameters

#### $to

`string`

### Returns

`bool`

## Sends the RSET command to abort and transaction that is currently in progress.

    Reset() : bool

Returns true if successful false otherwise.

Implements rfc 821: RSET <CRLF>

SMTP CODE SUCCESS: 250 SMTP CODE ERROR : 500,501,504,421

access | public

### Returns

`bool`

## Starts a mail transaction from the email address specified in $from.

    SendAndMail(string $from) : bool

Returns true if successful or false otherwise. If True the mail transaction is started and then one or more Recipient commands may be called followed by a Data command. This command will send the message to the users terminal if they are logged in and send them an email.

Implements rfc 821: SAML <SP> FROM: <CRLF>

SMTP CODE SUCCESS: 250 SMTP CODE SUCCESS: 552,451,452 SMTP CODE SUCCESS: 500,501,502,421

access | public

### Parameters

#### $from

`string`

### Returns

`bool`

## Initiate a TLS communication with the server.

    StartTLS() : bool

SMTP CODE 220 Ready to start TLS SMTP CODE 501 Syntax error (no parameters allowed) SMTP CODE 454 TLS not available due to temporary reason

access | public

### Returns

`bool`success

## This is an optional command for SMTP that this class does not support.

    Turn() : bool

This method is here to make the RFC821 Definition complete for this class and may be implimented in the future

Implements from rfc 821: TURN <CRLF>

SMTP CODE SUCCESS: 250 SMTP CODE FAILURE: 502 SMTP CODE ERROR : 500, 503

access | public

### Returns

`bool`

## Initialize the class so that the data is in a known state.

    __construct() : \SMTP

access | public

### Returns

`\SMTP`

## Get the current error

    getError() : array

access | public

### Returns

`array`

## Sends a HELO/EHLO command.

    SendHello(string $hello, string $host) : bool

access | private

### Parameters

#### $hello

`string`

#### $host

`string`

### Returns

`bool`

## Outputs debugging info via user-defined method

    edebug(string $str)

### Parameters

#### $str

`string`

## Read in as many lines as possible either before eof or socket timeout occurs on the operation.

    get_lines() : string

With SMTP we can tell if we have more lines to read if the 4th character is '-' symbol. If it is a space then we don't need to read anything else.

access | private

### Returns

`string`

### Properties

## SMTP reply line ending (don't change)

    $CRLF

@var string

## Sets the function/method to use for debugging output.

    $Debugoutput : string

Right now we only honor "echo" or "error_log"

## SMTP server port

    $SMTP_PORT

@var int

## Sets the SMTP timelimit value for reads, in seconds

    $Timelimit : int

## Sets the SMTP timeout value for reads, in seconds

    $Timeout : int

## Sets the SMTP PHPMailer Version number

    $Version : string

## Sets whether debugging is turned on

    $do_debug

@var bool

## Sets VERP use on/off (default is off)

    $do_verp

@var bool

## <p>Error message, if any, for the last call</p>

    $error : string

## <p>The reply the server sent to us for HELO</p>

    $helo_rply : string

## <p>The socket to the server</p>

    $smtp_conn : resource