ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
Mail_sendmail Class Reference
+ Inheritance diagram for Mail_sendmail:
+ Collaboration diagram for Mail_sendmail:

Public Member Functions

 Mail_sendmail ($params)
 Constructor. More...
 
 send ($recipients, $headers, $body)
 Implements Mail::send() function using the sendmail command-line binary. More...
 
- Public Member Functions inherited from Mail
factory ($driver, $params=array())
 Provides an interface for generating Mail:: objects of various types. More...
 
 send ($recipients, $headers, $body)
 Implements Mail::send() function using php's built-in mail() command. More...
 
 _sanitizeHeaders (&$headers)
 Sanitize an array of mail headers by removing any additional header strings present in a legitimate header's value. More...
 
 prepareHeaders ($headers)
 Take an array of mail headers and return a string containing text usable in sending a message. More...
 
 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. More...
 

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::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. @access public

Definition at line 59 of file sendmail.php.

60 {
61 if (isset($params['sendmail_path'])) {
62 $this->sendmail_path = $params['sendmail_path'];
63 }
64 if (isset($params['sendmail_args'])) {
65 $this->sendmail_args = $params['sendmail_args'];
66 }
67
68 /*
69 * Because we need to pass message headers to the sendmail program on
70 * the commandline, we can't guarantee the use of the standard "\r\n"
71 * separator. Instead, we use the system's native line separator.
72 */
73 if (defined('PHP_EOL')) {
74 $this->sep = PHP_EOL;
75 } else {
76 $this->sep = (strpos(PHP_OS, 'WIN') === false) ? "\n" : "\r\n";
77 }
78 }
$params
Definition: example_049.php:96

References $params.

◆ send()

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. @access public

Reimplemented from Mail.

Definition at line 105 of file sendmail.php.

106 {
107 if (!is_array($headers)) {
108 return PEAR::raiseError('$headers must be an array');
109 }
110
111 $result = $this->_sanitizeHeaders($headers);
112 if (is_a($result, 'PEAR_Error')) {
113 return $result;
114 }
115
116 $recipients = $this->parseRecipients($recipients);
117 if (is_a($recipients, 'PEAR_Error')) {
118 return $recipients;
119 }
120 $recipients = implode(' ', array_map('escapeshellarg', $recipients));
121
122 $headerElements = $this->prepareHeaders($headers);
123 if (is_a($headerElements, 'PEAR_Error')) {
124 return $headerElements;
125 }
126 list($from, $text_headers) = $headerElements;
127
128 /* Since few MTAs are going to allow this header to be forged
129 * unless it's in the MAIL FROM: exchange, we'll use
130 * Return-Path instead of From: if it's set. */
131 if (!empty($headers['Return-Path'])) {
132 $from = $headers['Return-Path'];
133 }
134
135 if (!isset($from)) {
136 return PEAR::raiseError('No from address given.');
137 } elseif (strpos($from, ' ') !== false ||
138 strpos($from, ';') !== false ||
139 strpos($from, '&') !== false ||
140 strpos($from, '`') !== false) {
141 return PEAR::raiseError('From address specified with dangerous characters.');
142 }
143
144 $from = escapeshellarg($from); // Security bug #16200
145
146 $mail = @popen($this->sendmail_path . (!empty($this->sendmail_args) ? ' ' . $this->sendmail_args : '') . " -f$from -- $recipients", 'w');
147 if (!$mail) {
148 return PEAR::raiseError('Failed to open sendmail [' . $this->sendmail_path . '] for execution.');
149 }
150
151 // Write the headers following by two newlines: one to end the headers
152 // section and a second to separate the headers block from the body.
153 fputs($mail, $text_headers . $this->sep . $this->sep);
154
155 fputs($mail, $body);
156 $result = pclose($mail);
157 if (version_compare(phpversion(), '4.2.3') == -1) {
158 // With older php versions, we need to shift the pclose
159 // result to get the exit code.
160 $result = $result >> 8 & 0xFF;
161 }
162
163 if ($result != 0) {
164 return PEAR::raiseError('sendmail returned error code ' . $result,
165 $result);
166 }
167
168 return true;
169 }
$result
_sanitizeHeaders(&$headers)
Sanitize an array of mail headers by removing any additional header strings present in a legitimate h...
Definition: Mail.php:153
parseRecipients($recipients)
Take a set of recipients and parse them, returning an array of bare addresses (forward paths) that ca...
Definition: Mail.php:240
prepareHeaders($headers)
Take an array of mail headers and return a string containing text usable in sending a message.
Definition: Mail.php:178
& raiseError($message=null, $code=null, $mode=null, $options=null, $userinfo=null, $error_class=null, $skipmsg=false)
This method is a wrapper that returns an instance of the configured error class with this object's de...
Definition: PEAR.php:524

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

+ Here is the call graph for this function:

Field Documentation

◆ $sendmail_args

Mail_sendmail::$sendmail_args = '-i'

Definition at line 39 of file sendmail.php.

◆ $sendmail_path

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: