PHP email creation and transport class

package PHPMailer

 Methods

Adds a "To" address.

AddAddress(string $address, string $name) : boolean

Parameters

$address

string

$name

string

Returns

booleantrue on success, false if address already used

Adds an attachment from a path on the filesystem.

AddAttachment(string $path, string $name, string $encoding, string $type) : bool

Returns false if the file could not be found or accessed.

Parameters

$path

string

Path to the attachment.

$name

string

Overrides the attachment name.

$encoding

string

File encoding (see $Encoding).

$type

string

File extension (MIME) type.

Exceptions

\phpmailerException

Returns

bool

Adds a "Bcc" address.

AddBCC(string $address, string $name) : boolean

Note: this function works with the SMTP mailer on win32, not with the "mail" mailer.

Parameters

$address

string

$name

string

Returns

booleantrue on success, false if address already used

Adds a "Cc" address.

AddCC(string $address, string $name) : boolean

Note: this function works with the SMTP mailer on win32, not with the "mail" mailer.

Parameters

$address

string

$name

string

Returns

booleantrue on success, false if address already used

Adds a custom header.

AddCustomHeader(string $name, string $value) : void

$name value can be overloaded to contain both header name and value (name:value)

access public

Parameters

$name

string

custom header name

$value

string

header value

Adds an embedded attachment.

AddEmbeddedImage(string $path, string $cid, string $name, string $encoding, string $type) : bool

This can include images, sounds, and just about any other document. Make sure to set the $type to an image type. For JPEG images use "image/jpeg" and for GIF images use "image/gif".

Parameters

$path

string

Path to the attachment.

$cid

string

Content ID of the attachment. Use this to identify the Id for accessing the image in an HTML form.

$name

string

Overrides the attachment name.

$encoding

string

File encoding (see $Encoding).

$type

string

File extension (MIME) type.

Returns

bool

Adds a "Reply-to" address.

AddReplyTo(string $address, string $name) : boolean

Parameters

$address

string

$name

string

Returns

boolean

Adds a string or binary attachment (non-filesystem) to the list.

AddStringAttachment(string $string, string $filename, string $encoding, string $type) : void

This method can be used to attach ascii or binary data, such as a BLOB record from a database.

Parameters

$string

string

String attachment data.

$filename

string

Name of the attachment.

$encoding

string

File encoding (see $Encoding).

$type

string

File extension (MIME) type.

Adds an embedded stringified attachment.

AddStringEmbeddedImage(string $string, string $cid, string $name, string $encoding, string $type) : bool

This can include images, sounds, and just about any other document. Make sure to set the $type to an image type. For JPEG images use "image/jpeg" and for GIF images use "image/gif".

Parameters

$string

string

The attachment.

$cid

string

Content ID of the attachment. Use this to identify the Id for accessing the image in an HTML form.

$name

string

Overrides the attachment name.

$encoding

string

File encoding (see $Encoding).

$type

string

File extension (MIME) type.

Returns

bool

Creates recipient headers.

AddrAppend(string $type, array $addr) : string

access public

Parameters

$type

string

$addr

array

Returns

string

Formats an address correctly.

AddrFormat(string $addr) : string

access public

Parameters

$addr

string

Returns

string

Does this message have an alternative body set?

AlternativeExists() : bool

Returns

bool

Returns true if an attachment (non-inline) is present.

AttachmentExists() : bool

Returns

bool

Correctly encodes and wraps long multibyte strings for mail headers without breaking lines within a character.

Base64EncodeWrapMB(string $str, string $lf) : string

Adapted from a function by paravoid at http://uk.php.net/manual/en/function.mb-encode-mimeheader.php

access public

Parameters

$str

string

multi-byte text to wrap encode

$lf

string

string to use as linefeed/end-of-line

Returns

string

Clears all recipients assigned in the TO array.

ClearAddresses() : void

Returns void.

Clears all recipients assigned in the TO, CC and BCC array.

ClearAllRecipients() : void

Returns void.

Clears all previously set filesystem, string, and binary attachments.

ClearAttachments() : void

Returns void.

Clears all recipients assigned in the BCC array.

ClearBCCs() : void

Returns void.

Clears all recipients assigned in the CC array.

ClearCCs() : void

Returns void.

Clears all custom headers.

ClearCustomHeaders() : void

Returns void.

Clears all recipients assigned in the ReplyTo array.

ClearReplyTos() : void

Returns void.

Assembles the message body.

CreateBody() : string

Returns an empty string on failure.

access public

Exceptions

\phpmailerException

Returns

stringThe assembled message body

Assembles message header.

CreateHeader() : string

access public

Returns

stringThe assembled header

Create the DKIM header, body, as new header

DKIM_Add(string $headers_line, string $subject, string $body) : string

access public

Parameters

$headers_line

string

Header lines

$subject

string

Subject

$body

string

Body

Returns

string

Generate DKIM Canonicalization Body

DKIM_BodyC(string $body) : string

access public

Parameters

$body

string

Message Body

Returns

string

Generate DKIM Canonicalization Header

DKIM_HeaderC(string $s) : string

access public

Parameters

$s

string

Header

Returns

string

Set the private key file and password to sign the message.

DKIM_QP(string $txt) : string

access public

Parameters

$txt

string

Returns

string

Generate DKIM signature

DKIM_Sign(string $s) : string

access public

Parameters

$s

string

Header

Returns

string

Encode a header string to best (shortest) of Q, B, quoted or none.

EncodeHeader(string $str, string $position) : string

access public

Parameters

$str

string

$position

string

Returns

string

Encode string to q encoding.

EncodeQ(string $str, string $position) : string

link http://tools.ietf.org/html/rfc2047
access public

Parameters

$str

string

the text to encode

$position

string

Where the text is going to be used, see the RFC for what that means

Returns

string

Encode string to RFC2045 (6.7) quoted-printable format Uses a PHP5 stream filter to do the encoding about 64x faster than the old version Also results in same content as you started with after decoding

EncodeQP(string $string, integer $line_max, boolean $space_conv) : string

see \global\EncodeQPphp()
access public
author Marcus Bointon

Parameters

$string

string

the text to encode

$line_max

integer

Number of chars allowed on a line before wrapping

$space_conv

boolean

Dummy param for compatibility with existing EncodeQP function

Returns

string

Encodes string to requested format.

EncodeString(string $str, string $encoding) : string

Returns an empty string on failure.

access public

Parameters

$str

string

The text to encode

$encoding

string

The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable'

Returns

string

Changes every end of line from CRLF, CR or LF to $this->LE.

FixEOL(string $str) : string

access public

Parameters

$str

string

String to FixEOL

Returns

string

Return the current array of attachments

GetAttachments() : array

Returns

array

Returns the message MIME.

GetMailMIME() : string

access public

Returns

string

Returns the MIME message (headers and body).

GetSentMIMEMessage() : string

Only really valid post PreSend().

access public

Returns

string

Return the current array of language strings

GetTranslations() : array

Returns

array

Checks if a string contains multibyte characters.

HasMultiBytes(string $str) : bool

access public

Parameters

$str

string

multi-byte text to wrap encode

Returns

bool

Returns a formatted header line.

HeaderLine(string $name, string $value) : string

access public

Parameters

$name

string

$value

string

Returns

string

Returns true if an inline attachment is present.

InlineImageExists() : bool

access public

Returns

bool

Returns true if an error occurred.

IsError() : bool

access public

Returns

bool

Sets message type to HTML.

IsHTML(bool $ishtml) : void

Parameters

$ishtml

bool

Sets Mailer to send message using PHP mail() function.

IsMail() : void

Sets Mailer to send message using the qmail MTA.

IsQmail() : void

Sets Mailer to send message using SMTP.

IsSMTP() : void

Sets Mailer to send message using the $Sendmail program.

IsSendmail() : void

Evaluates the message and returns modifications for inline images and backgrounds

MsgHTML(string $message, string $basedir) : string

access public

Parameters

$message

string

Text to be HTML modified

$basedir

string

baseline directory for path

Returns

string$message

Actual Email transport function Send the email via the selected mechanism

PostSend() : bool

Exceptions

\phpmailerException

Returns

bool

Prep mail by constructing all message entities

PreSend() : bool

Exceptions

\phpmailerException

Returns

bool

Returns the proper RFC 822 formatted date.

RFCDate() : string

access public
static

Returns

string

Strips newlines to prevent header injection.

SecureHeader(string $str) : string

access public

Parameters

$str

string

String

Returns

string

Creates message and assigns Mailer.

Send() : bool

If the message is not sent successfully then it returns false. Use the ErrorInfo variable to view description of the error.

Exceptions

\phpmailerException

Returns

bool

Set the From and FromName properties

SetFrom(string $address, string $name, int $auto) : boolean

Parameters

$address

string

$name

string

$auto

int

Also set Reply-To and Sender

Exceptions

\phpmailerException

Returns

boolean

Sets the language for all class error messages.

SetLanguage(string $langcode, string $lang_path) : bool

Returns false if it cannot load the language file. The default language is English.

access public

Parameters

$langcode

string

ISO 639-1 2-character language code (e.g. Portuguese: "br")

$lang_path

string

Path to the language file directory

Returns

bool

Set the body wrapping.

SetWordWrap() : void

access public

Set the private key file and password to sign the message.

Sign($cert_filename, string $key_filename, string $key_pass) 

access public

Parameters

$cert_filename

$key_filename

string

Parameter File Name

$key_pass

string

Password for private key

Closes the active SMTP session if one exists.

SmtpClose() : void

Initiates a connection to an SMTP server.

SmtpConnect() : bool

Returns false if the operation failed.

uses \global\SMTP
access public

Exceptions

\phpmailerException

Returns

bool

Returns a formatted mail line.

TextLine(string $value) : string

access public

Parameters

$value

string

Returns

string

Finds last character boundary prior to maxLength in a utf-8 quoted (printable) encoded string.

UTF8CharBoundary(string $encodedText, int $maxLength) : int

Original written by Colin Brown.

access public

Parameters

$encodedText

string

utf-8 QP text

$maxLength

int

find last character boundary prior to this length

Returns

int

Check that a string looks roughly like an email address should Static so it can be used without instantiation, public so people can overload Conforms to RFC5322: Uses *correct* regex on which FILTER_VALIDATE_EMAIL is based; So why not use FILTER_VALIDATE_EMAIL? Because it was broken to not allow a@b type valid addresses :( Some Versions of PHP break on the regex though, likely due to PCRE, so use the older validation method for those users.

ValidateAddress(string $address) : boolean

(http://php.net/manual/en/pcre.installation.php)

link http://squiloople.com/2009/12/20/email-address-validation/
copyright regex Copyright Michael Rushton 2009-10 | http://squiloople.com/ | Feel free to use and redistribute this code. But please keep this copyright notice.
static
access public

Parameters

$address

string

The email address to check

Returns

boolean

Wraps message for use with mailers that do not automatically perform wrapping and for quoted-printable.

WrapText(string $message, integer $length, boolean $qp_mode) : string

Original written by philippe.

access public

Parameters

$message

string

The message to wrap

$length

integer

The line length to wrap to

$qp_mode

boolean

Whether to run in Quoted-Printable mode

Returns

string

Constructor

__construct(boolean $exceptions) 

Parameters

$exceptions

boolean

Should we throw external exceptions?

Gets the MIME type of the embedded or inline image

_mime_types(string $ext) : string

access public
static

Parameters

$ext

string

File extension

Returns

stringMIME type of ext

Set (or reset) Class Objects (variables)

set(string $name, mixed $value) : bool

Usage Example: $page->set('X-Priority', '3');

access public
todo Should this not be using __set() magic function?

Parameters

$name

string

Parameter Name

$value

mixed

Parameter Value NOTE: will not work with arrays, there are no arrays to set/reset

Exceptions

\phpmailerException

Returns

bool

Adds an address to one of the recipient arrays Addresses that have been added already return false, but do not throw exceptions

AddAnAddress(string $kind, string $address, string $name) : boolean

access protected

Parameters

$kind

string

One of 'to', 'cc', 'bcc', 'ReplyTo'

$address

string

The email address to send to

$name

string

Exceptions

\phpmailerException

Returns

booleantrue on success, false if address already used or invalid in some way

Attaches all fs, string, and binary attachments to the message.

AttachAll(string $disposition_type, string $boundary) : string

Returns an empty string on failure.

access protected

Parameters

$disposition_type

string

$boundary

string

Returns

string

Encodes attachment in requested format.

EncodeFile(string $path, string $encoding) : string

Returns an empty string on failure.

see \global\EncodeFile()
access protected

Parameters

$path

string

The full path to the file

$encoding

string

The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable'

Exceptions

\phpmailerException

Returns

string

Returns the end of a message boundary.

EndBoundary(string $boundary) : string

access protected

Parameters

$boundary

string

Returns

string

Returns the start of a message boundary.

GetBoundary(string $boundary, string $charSet, string $contentType, string $encoding) : string

access protected

Parameters

$boundary

string

$charSet

string

$contentType

string

$encoding

string

Returns

string

Returns a message in the appropriate language.

Lang(string $key) : string

access protected

Parameters

$key

string

Returns

string

Sends mail using the PHP mail() function.

MailSend(string $header, string $body) : bool

access protected

Parameters

$header

string

The message headers

$body

string

The message body

Exceptions

\phpmailerException

Returns

bool

Sends mail using the $Sendmail program.

SendmailSend(string $header, string $body) : bool

access protected

Parameters

$header

string

The message headers

$body

string

The message body

Exceptions

\phpmailerException

Returns

bool

Returns the server hostname or 'localhost.localdomain' if unknown.

ServerHostname() : string

access protected

Returns

string

Adds the error message to the error container.

SetError(string $msg) : void

access protected

Parameters

$msg

string

Sets the message type.

SetMessageType() : void

access protected

Sends mail via SMTP using PhpSMTP Returns false if there is a bad MAIL FROM, RCPT, or DATA input.

SmtpSend(string $header, string $body) : bool

uses \global\SMTP
access protected

Parameters

$header

string

The message headers

$body

string

The message body

Exceptions

\phpmailerException

Returns

bool

Perform callback

doCallback(boolean $isSent, string $to, string $cc, string $bcc, string $subject, string $body, string $from) 

Parameters

$isSent

boolean

$to

string

$cc

string

$bcc

string

$subject

string

$body

string

$from

string

Outputs debugging info via user-defined method

edebug(string $str) 

Parameters

$str

string

Calls actual mail() function, but in a safe_mode aware fashion Also, unless sendmail_path points to sendmail (or something that claims to be sendmail), don't pass params (not a perfect fix, but it will do)

mail_passthru(string $to, string $subject, string $body, string $header, string $params) : bool

access private

Parameters

$to

string

To

$subject

string

Subject

$body

string

Message Body

$header

string

Additional Header(s)

$params

string

Params

Returns

bool

 Properties

 

Sets the text-only body of the message.

$AltBody : string

This automatically sets the email to multipart/alternative. This body can be read by mail clients that do not have HTML email capability such as mutt. Clients that can read HTML will view the normal Body.

 

Sets SMTP auth type.

$AuthType : string

Options are LOGIN | PLAIN | NTLM (default LOGIN)

 

Sets the Body of the message.

$Body : string

This can be either an HTML or text body. If HTML then run IsHTML(true).

 

Sets the CharSet of the message.

$CharSet : string

 

Sets the email address that a reading confirmation will be sent.

$ConfirmReadingTo : string

 

Sets the Content-type of the message.

$ContentType : string

 

Used with DKIM Singing required if DKIM is enabled, in format of email address 'domain.com'

$DKIM_domain : string

 

Used with DKIM Signing required if DKIM is enabled, in format of email address 'you@yourdomain.com' typically used as the source of the email

$DKIM_identity : string

 

Used with DKIM Signing optional parameter if your private key requires a passphras

$DKIM_passphrase : string

 

Used with DKIM Signing required if DKIM is enabled, path to private key file

$DKIM_private : string

 

Used with DKIM Signing required parameter if DKIM is enabled

$DKIM_selector : string

domain selector example domainkey

 

Sets the function/method to use for debugging output.

$Debugoutput : string

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

 

Sets the Encoding of the message.

$Encoding : string

Options for this are "8bit", "7bit", "binary", "base64", and "quoted-printable".

 

Holds the most recent mailer error message.

$ErrorInfo : string

 

Sets the From email address for the message.

$From : string

 

Sets the From name of the message.

$FromName : string

 

Sets the SMTP HELO of the message (Default is $Hostname).

$Helo : string

 

Sets the SMTP hosts.

$Host : string

All hosts must be separated by a semicolon. You can also specify a different port for each host by using this format: [hostname:port] (e.g. "smtp1.example.com:25;smtp2.example.com"). Hosts will be tried in order.

 

Sets the hostname to use in Message-Id and Received headers and as default HELO string.

$Hostname : string

If empty, the value returned by SERVER_NAME is used or 'localhost.localdomain'.

 

Provides the ability to change the generic line ending NOTE: The default remains '\n'.

$LE : string

We force CRLF where we KNOW it must be used via self::CRLF

 

Method to send mail: ("mail", "sendmail", or "smtp").

$Mailer : string

 

Sets the message Date to be used in the Date header.

$MessageDate : string

If empty, the current date will be added.

 

Sets the message ID to be used in the Message-Id header.

$MessageID : string

If empty, a unique id will be generated.

 

Sets SMTP password.

$Password : string

 

Path to PHPMailer plugins.

$PluginDir : string

Useful if the SMTP class is in a different directory than the PHP include path.

 

Sets the default SMTP server port.

$Port : int

 

Email priority (1 = High, 3 = Normal, 5 = low).

$Priority : int

 

Sets SMTP realm.

$Realm 

@var string

 

Sets the Return-Path of the message.

$ReturnPath : string

If empty, it will be set to either From or Sender.

 

Sets SMTP authentication.

$SMTPAuth : bool

Utilizes the Username and Password variables.

 

Sets SMTP class debugging on or off.

$SMTPDebug : bool

 

Prevents the SMTP connection from being closed after each mail sending.

$SMTPKeepAlive : bool

If this is set to true then to close the connection requires an explicit call to SmtpClose().

 

Sets connection prefix.

$SMTPSecure : string

Options are "", "ssl" or "tls"

 

Sets the Sender email (Return-Path) of the message.

$Sender : string

If not empty, will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode.

 

Sets the path of the sendmail program.

$Sendmail : string

 

Provides the ability to have the TO field process individual emails, instead of sending to entire TO addresses

$SingleTo : bool

 

If SingleTo is true, this provides the array to hold the email addresses

$SingleToArray : bool

 

Sets the Subject of the message.

$Subject : string

 

Sets the SMTP server timeout in seconds.

$Timeout : int

This function will not work with the win32 version.

 

Determine if mail() uses a fully sendmail compatible MTA that supports sendmail's "-oi -f" options

$UseSendmailOptions : boolean

 

Sets SMTP username.

$Username : string

 

Sets the PHPMailer Version number

$Version : string

 

Sets word wrapping on the body of the message to a given number of characters.

$WordWrap : int

 

Sets SMTP workstation.

$Workstation 

@var string

 

What to use in the X-Mailer header

$XMailer : string

 

Callback Action function name.

$action_function : string

The function that handles the result of the send email action. It is called out by Send() for each email sent.

Value can be: - 'function_name' for function names - 'Class::Method' for static method calls - array($object, 'Method') for calling methods on $object See http://php.net/is_callable manual page for more details.

Parameters: bool $result result of the send action string $to email address of the recipient string $cc cc email addresses string $bcc bcc email addresses string $subject the subject string $body the email body string $from email address of sender

 

<p>An array of custom headers</p>

$CustomHeader : array

access protected
 

Stores the complete compiled MIME message body.

$MIMEBody : string

access protected
 

Stores the complete compiled MIME message headers.

$MIMEHeader : string

access protected
 

<p>An array of reply-to name and address</p>

$ReplyTo : array

access protected
 

<p>An array of all kinds of addresses: to, cc, bcc, replyto</p>

$all_recipients : array

access protected
 

<p>An array of attachments</p>

$attachment : array

access protected
 

<p>An array of 'bcc' addresses</p>

$bcc : array

access protected
 

<p>An array of MIME boundary strings</p>

$boundary : array

access protected
 

<p>An array of 'cc' addresses</p>

$cc : array

access protected
 

<p>The number of errors encountered</p>

$error_count : integer

access protected
 

<p>Whether to throw exceptions for errors</p>

$exceptions : boolean

access protected
 

<p>An array of available languages</p>

$language : array

access protected
 

Stores the extra header list which CreateHeader() doesn't fold in

$mailHeader : string

access protected
 

<p>The message's MIME type</p>

$message_type : string

access protected
 

<p>The filename of a DKIM certificate file</p>

$sign_cert_file : string

access protected
 

<p>The filename of a DKIM key file</p>

$sign_key_file : string

access protected
 

<p>The password of a DKIM key</p>

$sign_key_pass : string

access protected
 

<p>An instance of the SMTP sender class</p>

$smtp : \SMTP

access protected
 

<p>An array of 'to' addresses</p>

$to : array

access protected

 Constants

 

CRLF

CRLF 

 

STOP_CONTINUE

STOP_CONTINUE 

 

STOP_CRITICAL

STOP_CRITICAL 

 

STOP_MESSAGE

STOP_MESSAGE