PEAR is archived and read-only

This mirror preserves historical PEAR package releases and metadata so existing references remain available.

Home » Mail » Mail » Manual

An interface for sending EMails

Introduction

Introduction – How to send a mail and the mailer backends

How To send a mail

Mail supports different types of backends to send email. So two steps are necessary to send an email.

The mailer backends

Mail supports three types of backends:

Mail::factory()

Mail::factory() – creates a mailer instance

Synopsis

require_once 'Mail.php';

object &factory ( string $backend , array $params = array() )

Description

Creates a instance of a backend-specific mailer class.

Parameter

Return value

object - a specific Mail instance or a PEAR_Error object on failure.

Throws

Possible PEAR_Error values
Error code Error message Reason Solution
NULL "Unable to find class for driver xxx" Mailer backend class was not found. Check the $backend parameter, if correct reinstall and/or update your Mail package.

Note

This function should be called statically.

See

"Introduction"

Mail::send()

Mail::send() – sends a mail

Synopsis

require_once 'Mail.php';

mixed send ( mixed $recipients , array $headers , string $body )

Description

Sends a mail. The send() method is provided by the object returned from factory()

Parameter

Return value

boolean - TRUE or a PEAR_Error object on failure.

Throws

Possible PEAR_Error values
Mailer driver Error code Error message Reason Solution
sendmail NULL "No from address given." The $headers array requires at least a from entry. Add a From header:
<?php
$headers['From'] = 'mymail@example.com';
?>
sendmail NULL "From address specified with dangerous characters." The from entry in the $headers array contains one ore more characters which could be non-RFC compliant. Check the given from address for characters like: spaces or ; or & or ` (backtick).
sendmail NULL "sendmail [path to sendmail] not executable" The path to sendmail program is not correct. No sendmail executable found there. Check the $param['sendmail_path'] entry in your Mail::factory() call. If you use another mailer then sendmail, ie. qmail, check installation of the mailer. Normally it should includes a sendmail wrapper.
sendmail NULL "sendmail returned error code code" Sendmail returns a error, which must be handled by use. See the documention of your mailer program.
smtp PEAR_MAIL_SMTP_ERROR_CREATE "Failed to create a Net_SMTP object" Failure in class creation. Reinstall/update the Net_SMTP package.
smtp PEAR_MAIL_SMTP_ERROR_CONNECT "Failed to connect to host:port" Connect to SMTP server failed. Check $param['port'] and $param['host'] entries in your Mail::factory() call.
smtp PEAR_MAIL_SMTP_ERROR_AUTH "method authentication failure" Authentication failed. Check $param['auth'], $param['username'] and $param['password'] entries in your Mail::factory() call. Ensure to use the correct authentication method for the SMTP server.
smtp PEAR_MAIL_SMTP_ERROR_FROM "No From: address has been provided" The $headers array requires at least a from entry. Add a From header:
<?php
$headers['From'] = 'mymail@example.com';
?>
smtp PEAR_MAIL_SMTP_ERROR_SENDER "Failed to set sender: from" Setting the sender address failed. Check the RFC-compliances of the sender address and the server connnectivity.
smtp PEAR_MAIL_SMTP_ERROR_RECIPIENT "Failed to add recipient: recipient " Sending of recipient address failed. Check the RFC-compliances of the recipient address and the server connnectivity.
smtp PEAR_MAIL_SMTP_ERROR_DATA "Failed to send data" Body of the mail message could not send Check the RFC-compliances of the message body and the server connnectivity.

Note

This function can not be called statically.

Example

<?php
include('Mail.php');

$recipients = 'joe@example.com';

$headers['From']    = 'richard@example.com';
$headers['To']      = 'joe@example.com';
$headers['Subject'] = 'Test message';

$body = 'Test message';

$params['sendmail_path'] = '/usr/lib/sendmail';

// Create the mail object using the Mail::factory method
$mail_object =& Mail::factory('sendmail', $params);

$mail_object->send($recipients, $headers, $body);
?>

See

Mail::factory()

RFC822 - Introduction

RFC822 - Introduction – email address validation

Description

This class performs email address checking according to the RFC822 specification.

Note that the class only checks for a proper format of the indicated email address. This means it is not guaranteed that the email address itself exists or is owned by the particular user. You may also want to send the user an email, and force them to respond.

Mail_RFC822::parseAddressList()

Mail_RFC822::parseAddressList() – extract the parts of a list of email addresses

Synopsis

require_once 'Mail/RFC822.php';

array parseAddressList ( string $address = '' , string $defaultDomain = 'localhost' , boolean $nestGroups = null , boolean $validate = null )

Description

Extracts the given addresses into their parts.

Parameter

Return value

array - a nested array of anonymous objects.

If $nestGroups set to FALSE, you can jump over the next paragraph.

Every array entry contains an object per group. This object has two attributes:

The addresses array consists of an array of anonymous objects for each address. This object comes with the following attributes:

Throws

Possible PEAR_Error values
Error code Error message Reason Solution
NULL every The given address string is not RFC822 compliant The error code contains a description of the error.

Note

This function can be called statically.

This class checks the string only. It does not check for the existence of an email address.

Example

Extract some addresses

<?php
$address = 'My group: "Richard" <richard@localhost>;, ted@example.com (A comment)';

$addresses = Mail_RFC822::parseAddressList($address, 'phpguru.org', TRUE);
print_r($addresses);
?>