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 | } |