1 <?php 2 /** 3 * Copyright 2010-2017 Horde LLC (http://www.horde.org/) 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 10 * o Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * o Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * o The names of the authors may not be used to endorse or promote 16 * products derived from this software without specific prior written 17 * permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 * 31 * @category Horde 32 * @copyright 2010-2017 Horde LLC 33 * @license http://www.horde.org/licenses/bsd New BSD License 34 * @package Mail 35 */ 36 37 /** 38 * Mock implementation, for testing. 39 * 40 * @author Chuck Hagenbuch <chuck@horde.org> 41 * @author Michael Slusarz <slusarz@horde.org> 42 * @category Horde 43 * @copyright 2010-2017 Horde LLC 44 * @license http://www.horde.org/licenses/bsd New BSD License 45 * @package Mail 46 */ 47 class Horde_Mail_Transport_Mock extends Horde_Mail_Transport 48 { 49 /** 50 * Array of messages that have been sent with the mock. 51 * 52 * @var array 53 */ 54 public $sentMessages = array(); 55 56 /** 57 * Callback before sending mail. 58 * 59 * @var callback 60 */ 61 protected $_preSendCallback; 62 63 /** 64 * Callback after sending mai. 65 * 66 * @var callback 67 */ 68 protected $_postSendCallback; 69 70 /** 71 * @param array Optional parameters: 72 * - postSendCallback: (callback) Called after an email would have been 73 * sent. 74 * - preSendCallback: (callback) Called before an email would be sent. 75 */ 76 public function __construct(array $params = array()) 77 { 78 if (isset($params['preSendCallback']) && 79 is_callable($params['preSendCallback'])) { 80 $this->_preSendCallback = $params['preSendCallback']; 81 } 82 83 if (isset($params['postSendCallback']) && 84 is_callable($params['postSendCallback'])) { 85 $this->_postSendCallback = $params['postSendCallback']; 86 } 87 } 88 89 /** 90 */ 91 public function send($recipients, array $headers, $body) 92 { 93 if ($this->_preSendCallback) { 94 call_user_func_array($this->_preSendCallback, array($this, $recipients, $headers, $body)); 95 } 96 97 $headers = $this->_sanitizeHeaders($headers); 98 list($from, $text_headers) = $this->prepareHeaders($headers); 99 100 if (is_resource($body)) { 101 stream_filter_register('horde_eol', 'Horde_Stream_Filter_Eol'); 102 stream_filter_append($body, 'horde_eol', STREAM_FILTER_READ, array('eol' => $this->sep)); 103 104 rewind($body); 105 $body_txt = stream_get_contents($body); 106 } else { 107 $body_txt = $this->_normalizeEOL($body); 108 } 109 110 $from = $this->_getFrom($from, $headers); 111 $recipients = $this->parseRecipients($recipients); 112 113 $this->sentMessages[] = array( 114 'body' => $body_txt, 115 'from' => $from, 116 'headers' => $headers, 117 'header_text' => $text_headers, 118 'recipients' => $recipients 119 ); 120 121 if ($this->_postSendCallback) { 122 call_user_func_array($this->_postSendCallback, array($this, $recipients, $headers, $body_txt)); 123 } 124 } 125 126 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body