ILIAS  Release_4_2_x_branch Revision 61807
 All Data Structures Namespaces Files Functions Variables Groups Pages
Mail_sendmail Class Reference
+ Inheritance diagram for Mail_sendmail:
+ Collaboration diagram for Mail_sendmail:

Public Member Functions

 Mail_sendmail ($params)
 Constructor.
 send ($recipients, $headers, $body)
 Implements Mail::send() function using the sendmail command-line binary.
- Public Member Functions inherited from Mail
factory ($driver, $params=array())
 Provides an interface for generating Mail:: objects of various types.
 _sanitizeHeaders (&$headers)
 Sanitize an array of mail headers by removing any additional header strings present in a legitimate header's value.
 prepareHeaders ($headers)
 Take an array of mail headers and return a string containing text usable in sending a message.
 parseRecipients ($recipients)
 Take a set of recipients and parse them, returning an array of bare addresses (forward paths) that can be passed to sendmail or an smtp server with the rcpt to: command.

Data Fields

 $sendmail_path = '/usr/sbin/sendmail'
 $sendmail_args = '-i'
- Data Fields inherited from Mail
 $sep = "\r\n"

Detailed Description

Definition at line 25 of file sendmail.php.

Member Function Documentation

Mail_sendmail::Mail_sendmail (   $params)

Constructor.

Instantiates a new Mail_sendmail:: object based on the parameters passed in. It looks for the following parameters: sendmail_path The location of the sendmail binary on the filesystem. Defaults to '/usr/sbin/sendmail'.

sendmail_args Any extra parameters to pass to the sendmail or sendmail wrapper binary.

If a parameter is present in the $params array, it replaces the default.

Parameters
array$paramsHash containing any parameters different from the defaults. public

Definition at line 59 of file sendmail.php.

{
if (isset($params['sendmail_path'])) {
$this->sendmail_path = $params['sendmail_path'];
}
if (isset($params['sendmail_args'])) {
$this->sendmail_args = $params['sendmail_args'];
}
/*
* Because we need to pass message headers to the sendmail program on
* the commandline, we can't guarantee the use of the standard "\r\n"
* separator. Instead, we use the system's native line separator.
*/
if (defined('PHP_EOL')) {
$this->sep = PHP_EOL;
} else {
$this->sep = (strpos(PHP_OS, 'WIN') === false) ? "\n" : "\r\n";
}
}
Mail_sendmail::send (   $recipients,
  $headers,
  $body 
)

Implements Mail::send() function using the sendmail command-line binary.

Parameters
mixed$recipientsEither a comma-seperated list of recipients (RFC822 compliant), or an array of recipients, each RFC822 valid. This may contain recipients not specified in the headers, for Bcc:, resending messages, etc.
array$headersThe array of headers to send with the mail, in an associative array, where the array key is the header name (ie, 'Subject'), and the array value is the header value (ie, 'test'). The header produced from those values would be 'Subject: test'.
string$bodyThe full text of the message body, including any Mime parts, etc.
Returns
mixed Returns true on success, or a PEAR_Error containing a descriptive error message on failure. public

Reimplemented from Mail.

Definition at line 105 of file sendmail.php.

References $result, Mail\_sanitizeHeaders(), Mail\parseRecipients(), Mail\prepareHeaders(), and PEAR\raiseError().

{
if (!is_array($headers)) {
return PEAR::raiseError('$headers must be an array');
}
$result = $this->_sanitizeHeaders($headers);
if (is_a($result, 'PEAR_Error')) {
return $result;
}
$recipients = $this->parseRecipients($recipients);
if (is_a($recipients, 'PEAR_Error')) {
return $recipients;
}
$recipients = implode(' ', array_map('escapeshellarg', $recipients));
$headerElements = $this->prepareHeaders($headers);
if (is_a($headerElements, 'PEAR_Error')) {
return $headerElements;
}
list($from, $text_headers) = $headerElements;
/* Since few MTAs are going to allow this header to be forged
* unless it's in the MAIL FROM: exchange, we'll use
* Return-Path instead of From: if it's set. */
if (!empty($headers['Return-Path'])) {
$from = $headers['Return-Path'];
}
if (!isset($from)) {
return PEAR::raiseError('No from address given.');
} elseif (strpos($from, ' ') !== false ||
strpos($from, ';') !== false ||
strpos($from, '&') !== false ||
strpos($from, '`') !== false) {
return PEAR::raiseError('From address specified with dangerous characters.');
}
$from = escapeshellarg($from); // Security bug #16200
$mail = @popen($this->sendmail_path . (!empty($this->sendmail_args) ? ' ' . $this->sendmail_args : '') . " -f$from -- $recipients", 'w');
if (!$mail) {
return PEAR::raiseError('Failed to open sendmail [' . $this->sendmail_path . '] for execution.');
}
// Write the headers following by two newlines: one to end the headers
// section and a second to separate the headers block from the body.
fputs($mail, $text_headers . $this->sep . $this->sep);
fputs($mail, $body);
$result = pclose($mail);
if (version_compare(phpversion(), '4.2.3') == -1) {
// With older php versions, we need to shift the pclose
// result to get the exit code.
$result = $result >> 8 & 0xFF;
}
if ($result != 0) {
return PEAR::raiseError('sendmail returned error code ' . $result,
}
return true;
}

+ Here is the call graph for this function:

Field Documentation

Mail_sendmail::$sendmail_args = '-i'

Definition at line 39 of file sendmail.php.

Mail_sendmail::$sendmail_path = '/usr/sbin/sendmail'

Definition at line 32 of file sendmail.php.


The documentation for this class was generated from the following file: