"Заглушка" sendmail для XAMPP

Наверное многие из вас, как и я, тестируют сайты у себя на локальном веб-сервере под Windows. И наверное многие сталкиваются с проблемой просмотра отправляемых писем стандартной PHP-функцией mail().
Эту идею и пример я нашел тут.
Уже как 2 года пользуюсь сборкой XAMPP. Сначала было трудно перейти с Denverа, но наличие обновлений и хорошей поддержки все-таки перетянуло меня на сторону XAMPP. Один недостаток XAMPP мучал меня долго — это не было возможности сохранять письма локально, без отправки на почтовые сервера.
Сейчас у меня стоит XAMPP Lite 1.7.2 .
Для создания заглушки sendmail для XAMPP нам необходимо сделать следующее:
- В папке sendmail в домашней директории XAMPP создаем файл sendmail.php:
<?php //путь папки в которую будем сохранять почту define('DIR','D:/xampplite/tmp/sendmail/'); //получаем из потока тело письма $stream = ''; $fp = fopen('php://stdin','r'); while($t=fread($fp,2048)) { if( $t===chr(0) ) break; $stream .= $t; } fclose($fp); //Сохраняем в уникальный файл $fp = fopen(mkname(),'w'); // Конвертируем в другую кодировку при желании //$stream = iconv("UTF-8","CP1251",$stream) fwrite($fp, $stream); fclose($fp); //Функция создания уникального имени файла function mkname($i=0) { if($i > 0) $str_i = '_'.$i; else $str_i = ''; $fn = DIR.date('Y-m-d_H-i-s').$str_i.'.eml'; if ( file_exists($fn) ) return mkname(++$i); else return $fn; } ?> - В файле «\php\php.ini» ищем строчку (у меня 1105 строка):
sendmail_path = "\"\xampplite\sendmail\sendmail.exe\" -t"
и заменяем ее на:
sendmail_path = "D:\xampplite\php\php.exe D:\xampplite\sendmail\sendmail.php"
Пути нужно подправить в соответствии с той директорией, куда вы установили XAMPP.
- Перезапускаем сервис Apache, и проверяем работу заглушки. Если вы все сделали правильно, все отправленные письма будут находиться в папке «/tmp/sendmail/«.
Читайте ещё похожие статьи на этом сайте:
Если Вам понравилась эта статья, пожалуйста оставьте свой комментарий или подпишитесь на RSS-канал и получайте в будущем статьи на RSS Reader.

да — сталкивался с подобной проблемой. Спасибо