pictcode / lib / Cake / Network / Email / MailTransport.php @ 4c96e5a3
履歴 | 表示 | アノテート | ダウンロード (2.813 KB)
| 1 | 635eef61 | spyder1211 | <?php
 | 
      
|---|---|---|---|
| 2 | /**
 | 
      ||
| 3 |  * Send mail using mail() function
 | 
      ||
| 4 |  *
 | 
      ||
| 5 |  * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 | 
      ||
| 6 |  * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 | 
      ||
| 7 |  *
 | 
      ||
| 8 |  * Licensed under The MIT License
 | 
      ||
| 9 |  * For full copyright and license information, please see the LICENSE.txt
 | 
      ||
| 10 |  * Redistributions of files must retain the above copyright notice.
 | 
      ||
| 11 |  *
 | 
      ||
| 12 |  * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 | 
      ||
| 13 |  * @link          http://cakephp.org CakePHP(tm) Project
 | 
      ||
| 14 |  * @package       Cake.Network.Email
 | 
      ||
| 15 |  * @since         CakePHP(tm) v 2.0.0
 | 
      ||
| 16 |  * @license       http://www.opensource.org/licenses/mit-license.php MIT License
 | 
      ||
| 17 |  */
 | 
      ||
| 18 | |||
| 19 | /**
 | 
      ||
| 20 |  * Send mail using mail() function
 | 
      ||
| 21 |  *
 | 
      ||
| 22 |  * @package       Cake.Network.Email
 | 
      ||
| 23 |  */
 | 
      ||
| 24 | class MailTransport extends AbstractTransport {  | 
      ||
| 25 | |||
| 26 | /**
 | 
      ||
| 27 |  * Send mail
 | 
      ||
| 28 |  *
 | 
      ||
| 29 |  * @param CakeEmail $email CakeEmail
 | 
      ||
| 30 |  * @return array
 | 
      ||
| 31 |  * @throws SocketException When mail cannot be sent.
 | 
      ||
| 32 |  */
 | 
      ||
| 33 | public function send(CakeEmail $email) {  | 
      ||
| 34 | $eol = PHP_EOL;  | 
      ||
| 35 | if (isset($this->_config['eol'])) {  | 
      ||
| 36 | $eol = $this->_config['eol'];  | 
      ||
| 37 | }  | 
      ||
| 38 | $headers = $email->getHeaders(array('from', 'sender', 'replyTo', 'readReceipt', 'returnPath', 'to', 'cc', 'bcc'));  | 
      ||
| 39 | $to = $headers['To'];  | 
      ||
| 40 | unset($headers['To']);  | 
      ||
| 41 | foreach ($headers as $key => $header) {  | 
      ||
| 42 | $headers[$key] = str_replace(array("\r", "\n"), '', $header);  | 
      ||
| 43 | }  | 
      ||
| 44 | $headers = $this->_headersToString($headers, $eol);  | 
      ||
| 45 | $subject = str_replace(array("\r", "\n"), '', $email->subject());  | 
      ||
| 46 | $to = str_replace(array("\r", "\n"), '', $to);  | 
      ||
| 47 | |||
| 48 | $message = implode($eol, $email->message());  | 
      ||
| 49 | |||
| 50 | $params = isset($this->_config['additionalParameters']) ? $this->_config['additionalParameters'] : null;  | 
      ||
| 51 | $this->_mail($to, $subject, $message, $headers, $params);  | 
      ||
| 52 | return array('headers' => $headers, 'message' => $message);  | 
      ||
| 53 | }  | 
      ||
| 54 | |||
| 55 | /**
 | 
      ||
| 56 |  * Wraps internal function mail() and throws exception instead of errors if anything goes wrong
 | 
      ||
| 57 |  *
 | 
      ||
| 58 |  * @param string $to email's recipient
 | 
      ||
| 59 |  * @param string $subject email's subject
 | 
      ||
| 60 |  * @param string $message email's body
 | 
      ||
| 61 |  * @param string $headers email's custom headers
 | 
      ||
| 62 |  * @param string $params additional params for sending email, will be ignored when in safe_mode
 | 
      ||
| 63 |  * @throws SocketException if mail could not be sent
 | 
      ||
| 64 |  * @return void
 | 
      ||
| 65 |  */
 | 
      ||
| 66 | protected function _mail($to, $subject, $message, $headers, $params = null) {  | 
      ||
| 67 | if (ini_get('safe_mode')) {  | 
      ||
| 68 |                         //@codingStandardsIgnoreStart
 | 
      ||
| 69 | if (!@mail($to, $subject, $message, $headers)) {  | 
      ||
| 70 | $error = error_get_last();  | 
      ||
| 71 | $msg = 'Could not send email: ' . isset($error['message']) ? $error['message'] : 'unknown';  | 
      ||
| 72 | throw new SocketException($msg);  | 
      ||
| 73 | }  | 
      ||
| 74 | } elseif (!@mail($to, $subject, $message, $headers, $params)) {  | 
      ||
| 75 | $error = error_get_last();  | 
      ||
| 76 | $msg = 'Could not send email: ' . isset($error['message']) ? $error['message'] : 'unknown';  | 
      ||
| 77 |                         //@codingStandardsIgnoreEnd
 | 
      ||
| 78 | throw new SocketException($msg);  | 
      ||
| 79 | }  | 
      ||
| 80 | }  | 
      ||
| 81 | |||
| 82 | }  |