1: <?php
 2:  3:  4:  5:  6:  7:  8:  9: 10: 11: 12: 13: 14: 15: 16: 17: 
18: 
19: 20: 21: 22: 23: 
24: class MailTransport extends AbstractTransport {
25: 
26: 27: 28: 29: 30: 31: 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: 57: 58: 59: 60: 61: 62: 63: 64: 65: 
66:     protected function _mail($to, $subject, $message, $headers, $params = null) {
67:         if (ini_get('safe_mode')) {
68:             
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:             
78:             throw new SocketException($msg);
79:         }
80:     }
81: 
82: }
83: