Skip to content

Instantly share code, notes, and snippets.

@zaininnari
Created October 23, 2011 13:00
Show Gist options
  • Save zaininnari/1307336 to your computer and use it in GitHub Desktop.
Save zaininnari/1307336 to your computer and use it in GitHub Desktop.
for test (use session) app/Lib/Network/EmailDebugTransport.php
<?php
/**
* Emulates the email sending process for testing purposes
*
* PHP 5
*
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @package Cake.Network.Email
* @since CakePHP(tm) v 2.0.0
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
*/
/**
* Debug Transport class, useful for emulate the email sending process and inspect the resulted
* email message before actually send it during development
*
* @package Cake.Network.Email
*/
class DebugTransport extends AbstractTransport {
const sessionKey = 'Cake.Network.Email.DebugTransport';
/**
* Send mail
*
* @param CakeEmail $email CakeEmail
* @return array
*/
public function send(CakeEmail $email) {
$headersAndMessage = $this->_send($email);
// {{{ for test
// テストの開始時(または終了時)、$_SESSION の初期化が必要
$stores = CakeSession::read(self::sessionKey);
if (!$stores) { // null, false
$stores = array($headersAndMessage);
} else {
$stores[] = $headersAndMessage;
}
CakeSession::write(self::sessionKey, $stores);
// }}} for test
return $headersAndMessage;
}
public function _send(CakeEmail $email) {
$headers = $email->getHeaders(array('from', 'sender', 'replyTo', 'readReceipt', 'returnPath', 'to', 'cc', 'bcc', 'subject'));
$headers = $this->_headersToString($headers);
$message = implode("\r\n", (array)$email->message());
return array('headers' => $headers, 'message' => $message);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment