diff -r 000000000000 -r 4eba9c11703f web/Zend/Mail/Transport/File.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/Zend/Mail/Transport/File.php Mon Dec 13 18:29:26 2010 +0100 @@ -0,0 +1,134 @@ +toArray(); + } elseif (!is_array($options)) { + $options = array(); + } + + // Making sure we have some defaults to work with + if (!isset($options['path'])) { + $options['path'] = sys_get_temp_dir(); + } + if (!isset($options['callback'])) { + $options['callback'] = array($this, 'defaultCallback'); + } + + $this->setOptions($options); + } + + /** + * Sets options + * + * @param array $options + * @return void + */ + public function setOptions(array $options) + { + if (isset($options['path'])&& is_dir($options['path'])) { + $this->_path = $options['path']; + } + if (isset($options['callback']) && is_callable($options['callback'])) { + $this->_callback = $options['callback']; + } + } + + /** + * Saves e-mail message to a file + * + * @return void + * @throws Zend_Mail_Transport_Exception on not writable target directory + * @throws Zend_Mail_Transport_Exception on file_put_contents() failure + */ + protected function _sendMail() + { + $file = $this->_path . DIRECTORY_SEPARATOR . call_user_func($this->_callback, $this); + + if (!is_writable(dirname($file))) { + require_once 'Zend/Mail/Transport/Exception.php'; + throw new Zend_Mail_Transport_Exception(sprintf( + 'Target directory "%s" does not exist or is not writable', + dirname($file) + )); + } + + $email = $this->header . $this->EOL . $this->body; + + if (!file_put_contents($file, $email)) { + require_once 'Zend/Mail/Transport/Exception.php'; + throw new Zend_Mail_Transport_Exception('Unable to send mail'); + } + } + + /** + * Default callback for generating filenames + * + * @param Zend_Mail_Transport_File File transport instance + * @return string + */ + public function defaultCallback($transport) + { + return 'ZendMail_' . $_SERVER['REQUEST_TIME'] . '_' . mt_rand() . '.tmp'; + } +}