pictcode / lib / Cake / Network / Email / MailTransport.php @ 635eef61
履歴 | 表示 | アノテート | ダウンロード (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 | } |