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: