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


Наверное многие из вас,  как и я,  тестируют сайты у себя на локальном веб-сервере под Windows. И наверное многие сталкиваются с проблемой просмотра отправляемых писем стандартной PHP-функцией mail().

Эту идею и пример я нашел тут.

Уже как 2 года пользуюсь сборкой XAMPP.  Сначала было трудно перейти с Denverа, но наличие обновлений и хорошей поддержки  все-таки перетянуло меня на сторону XAMPP. Один недостаток XAMPP мучал меня долго — это не было возможности сохранять письма локально, без отправки на почтовые сервера.

Сейчас у меня стоит XAMPP Lite 1.7.2 .

Для создания заглушки sendmail для XAMPP нам  необходимо сделать следующее:

  1. В папке 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;
    }
    
    ?>
  2. В файле «\php\php.ini» ищем строчку (у меня 1105 строка):
    sendmail_path = "\"\xampplite\sendmail\sendmail.exe\" -t"

    и заменяем ее на:

    sendmail_path = "D:\xampplite\php\php.exe D:\xampplite\sendmail\sendmail.php"

    Пути нужно подправить в соответствии с той директорией, куда вы установили XAMPP.

  3. Перезапускаем сервис Apache, и проверяем работу заглушки. Если вы все сделали правильно, все отправленные письма будут находиться в папке «/tmp/sendmail/«.
Share

Читайте ещё похожие статьи на этом сайте:

  1. MySql удаленное подключение, доступ по сети
1 балл2 балла3 балла4 балла5 баллов (1 голосов, среднее: 5,00 из 5)
Loading ... Loading ...
PHP, Web, Программирование


Если Вам понравилась эта статья, пожалуйста оставьте свой комментарий или подпишитесь на RSS-канал и получайте в будущем статьи на RSS Reader.

Комментарии

1 комментарий для “"Заглушка" sendmail для XAMPP”

Написать комментарий

(обязательно)

(обязательно, не публикуется)