PHPMailer RFC821 SMTP email transport class.
Implements RFC 821 SMTP commands and provides some utility methods for sending mail to an SMTP server.
package | PHPMailer |
---|---|
author | Chris Ryan |
author | Marcus Bointon |
authenticate(string $username, string $password, string $authtype= null
, string $realm= ''
, string $workstation= ''
, null|\OAuth $OAuth= null
) : boolean
Must be run after hello().
see |
---|
string
The user name
string
The password
string
The auth type (PLAIN, LOGIN, CRAM-MD5)
string
The auth realm for NTLM
string
The auth workstation for NTLM
null
\OAuth
An optional OAuth instance (@see PHPMailerOAuth)
boolean
True if successfully authenticated.* @access publicclient_send(string $data) : integer | boolean
access | public |
---|
string
The data to send
integer
boolean
The number of bytes sent to the server or false on errorclose() : void
connect(string $host, integer $port= null
, integer $timeout= 30
, array $options= array()
) : boolean
access | public |
---|
string
SMTP server IP or host name
integer
The port number to connect to
integer
How long to wait for the connection to open
array
An array of options for stream_context_create()
boolean
connected() : boolean
access | public |
---|
boolean
True if connected.data(string $msg_data) : boolean
Issues a data command and sends the msg_data to the server,
finializing the mail transaction. $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
access | public |
---|
string
Message data to send
boolean
getDebugLevel() : integer
integer
getDebugOutput() : string
string
getError() : array
access | public |
---|
array
getLastReply() : string
access | public |
---|
string
getLastTransactionID() : boolean | null | string
getServerExt(string $name) : mixed
string
Name of SMTP extension or 'HELO'|'EHLO'
mixed
getServerExtList() : array | null
access | public |
---|
array
null
getTimeout() : integer
integer
getVerp() : boolean
boolean
hello(string $host = ''
) : boolean
Used to identify the sending server to the receiving server.
This makes sure that client and server are in a known state.
Implements RFC 821: HELO
access | public |
---|
string
The host name or IP to connect to
boolean
mail(string $from) : boolean
Starts a mail transaction from the email address specified in
$from. 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
access | public |
---|
string
Source address of this message
boolean
noop() : boolean
Used to keep keep-alives alive, doesn't actually do anything
access | public |
---|
boolean
quit(boolean $close_on_error = true
) : boolean
Closes the socket if there is no error or the $close_on_error argument is true.
Implements from rfc 821: QUIT
access | public |
---|
boolean
Should the connection close if an error occurs?
boolean
recipient(string $address) : boolean
Sets the TO argument to $toaddr.
Returns true if the recipient was accepted false if it was rejected.
Implements from rfc 821: RCPT
access | public |
---|
string
The address the message is being sent to
boolean
reset() : boolean
Abort any transaction that is currently in progress.
Implements rfc 821: RSET
access | public |
---|
boolean
True on success.sendAndMail(string $from) : boolean
Starts a mail transaction from the email address specified in $from.
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
access | public |
---|
string
The address the message is from
boolean
setDebugLevel(integer $level = 0
)
integer
setDebugOutput(string|callable $method = 'echo'
)
string
callable
The name of the mechanism to use for debugging output, or a callable to handle it.
setTimeout(integer $timeout = 0
)
integer
setVerp(boolean $enabled = false
)
boolean
startTLS() : boolean
access | public |
---|
boolean
turn() : boolean
This is an optional command for SMTP that this class does not support.
This method is here to make the RFC821 Definition complete for this class
and may be implemented in future
Implements from rfc 821: TURN
access | public |
---|
boolean
verify(string $name) : boolean
access | public |
---|
string
The name to verify
boolean
edebug(string $str, integer $level = 0
) : void
errorHandler(integer $errno, string $errmsg, string $errfile= ''
, integer $errline= 0
)
integer
The error number returned by PHP.
string
The error message returned by PHP.
string
The file the error occurred in
integer
The line number the error occurred on
get_lines() : string
Either before eof or socket timeout occurs on the operation. 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 | protected |
---|
string
hmac(string $data, string $key) : string
Works like hash_hmac('md5', $data, $key) in case that function is not available
access | protected |
---|
string
The data to hash
string
The key to hash with
string
parseHelloFields(string $type)
In case of HELO, the only parameter that can be discovered is a server name.
access | protected |
---|
string
recordLastTransactionID() : boolean | null | string
Relies on the host providing the ID in response to a DATA command. If no reply has been received yet, it will return null. If no pattern was matched, it will return false.
boolean
null
string
sendCommand(string $command, string $commandstring, integer|array $expect) : boolean
access | protected |
---|
string
The command name - not sent to the server
string
The actual command to send
integer
array
One or more expected integer success codes
boolean
True on success.sendHello(string $hello, string $host) : boolean
setError(string $message, string $detail= ''
, string $smtp_code= ''
, string $smtp_code_ex= ''
)
string
The error message
string
Further detail on the error
string
An associated SMTP error code
string
Extended SMTP code
$CRLF : string
"\r\n"
$Debugoutput : string | callable
'echo'
Options:
echo
Output plain-text as-is, appropriate for CLIhtml
Output escaped, line breaks converted to <br>
, appropriate for browser outputerror_log
Output to error log as configured in php.iniAlternatively, you can provide a callable expecting two params: a message string and the debug level:
$smtp->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";};
$SMTP_PORT : integer
25
$Timelimit : integer
300
Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2
$Timeout : integer
300
Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2 This needs to be quite high to function correctly with hosts using greetdelay as an anti-spam measure.
link | http://tools.ietf.org/html/rfc2821#section-4.5.3.2 |
---|
$Version : string
'5.2.27'
$do_debug : integer
self::DEBUG_OFF
Options:
0
) No debug output, default1
) Client commands2
) Client commands and server responses3
) As DEBUG_SERVER plus connection status4
) Low-level data output, all messages$do_verp : boolean
false
$error : array
array('error' => '', 'detail' => '', 'smtp_code' => '', 'smtp_code_ex' => '')
$helo_rply : string | null
null
If null, no HELO string has yet been received.
$last_reply : string
''
$last_smtp_transaction_id : string
$server_caps : array | null
null
Indexes of the array are extension names. Value at index 'HELO' or 'EHLO' (according to command that was sent) represents the server name. In case of HELO it is the only element of the array. Other values can be boolean TRUE or an array containing extension options. If null, no HELO/EHLO string has yet been received.
$smtp_conn : resource
$smtp_transaction_id_patterns : array
array('exim' => '/[0-9]{3} OK id=(.*)/', 'sendmail' => '/[0-9]{3} 2.0.0 (.*) Message/', 'postfix' => '/[0-9]{3} 2.0.0 Ok: queued as (.*)/')
CRLF = "\r\n" : string
DEBUG_CLIENT = 1
DEBUG_CONNECTION = 3
DEBUG_LOWLEVEL = 4
DEBUG_OFF = 0
DEBUG_SERVER = 2
DEFAULT_SMTP_PORT = 25 : integer
MAX_LINE_LENGTH = 998 : integer
VERSION = '5.2.27' : string