Блог web-разработчика

Личные заметки из области web-разработки, программирования, администрирования, IT

Letter

Заглушка для писем

| Нет комментариев

При разработке веб-проектов требуется тестирование отправки писем без реальной отправки на ящик адресата.
Предлагаю простой и гибкий способ для создания заглушки. Этот способ предполагает создание файлов писем в определённом каталоге, причём письма в Веб никуда не уходят.

В файле php.ini устанавливаем значение директивы sendmail_path:

sendmail_path = "/usr/bin/php /home/user/sendmail_stub.php"

, либо меняем во время выполнения вашего скрипта, отправляющего письма:

ini_set('sendmail_path', '/usr/bin/php /home/user/sendmail_stub.php');

Таким образом мы говорим PHP, что программа, ответственная за отправку писем находится по указанному выше пути. (Примечание: вместо /home/user/ используйте путь до вашей домашней директории).
В качестве «программы» у нас будет выступать php-скрипт. Создайте файл /home/user/sendmail_stub.php:

#!/usr/bin/php
<?php

//папка в которую будем складывать почту
define('DIR','/var/log/sendmail_stub/');

//получаем из потока тело письма
$stream = '';
$fp = fopen('php://stdin','r');
while($t=fread($fp,2048))
{
        if( $t===chr(0) )
        break;
        $stream .= $t;
}
fclose($fp);

//Сохраняем в файл
$fp = fopen(mkname(),'w');
fwrite($fp,$stream);
fclose($fp);

//Функция присвоения имени файлу
function mkname($i=0)
{
        $fn = DIR.date('Y-m-d_H-i').'.eml';
        if ( file_exists($fn) )
                return mkname(++$i);
        else
                return $fn;
}


?>

Также нам необходимо создать каталог /var/log/sendmail_stub, куда будут складываться наши письма.
Удостоверьтесь, что скрипт (а точнее, пользователь, исполняющий скрипт sendmail_stub.php) имеет права на запись к данному каталогу.

Добавить комментарий

Обязательные поля отмечены *.

*

* Copy this password:

* Type or paste password here:

7,319 Spam Comments Blocked so far by Spam Free Wordpress