Всем доброго дня!
Народ помогите пожалуйста накидать скрипт (желательно на баше), которые будет считывать входной поток (stdin), передавать на sendmail, и сохранять письмо в файл.
Т.к. программирую на php, не составило труда сделать это на php, но это не хорошо
#!/usr/bin/php
<?php
/* Получаем текст письма из входного потока */
$mail = '';
$fp = fopen('php://stdin', 'rb');
while (!feof($fp)) {
$mail .= fread($fp, 512);
}
/* Корректировка заголовков */
$e = preg_split('~(\r\n\r\n)|(\n\r\n\r)|(\n\n)|(\r\r)~', $mail, 2);
$headersS = preg_split('~(\r\n)|(\n\r)|\n|\r~', $e[0]);
$headers = Array();
$body = isset($e[1]) ? $e[1] : '';
foreach ($headersS as $header) {
$e = explode(':', $header, 2);
$name = strtolower(trim($e[0]));
$value = trim(isset($e[1]) ? $e[1] : '');
$headers[$name] = $value;
}
$headersS = implode("\r\n", $headersS);
if (!isset($headers['date'])) {
$headersS = 'Date: '.gmdate('D, j M Y H:i:s')."\r\n".$headersS;
}
if (!isset($headers['content-type'])) {
$headersS = "Content-Type: text/plain; charset=windows-1251\r\n".$headersS;
}
if (!isset($headers['mime-version'])) {
$headersS = "MIME-Version: 1.0\r\n".$headersS;
}
$mail = $headersS."\r\n\r\n".$body;
/* Генерируем имя файла */
$fileNameBase = dirName(__FILE__).'/mails/'.date('Ymd_His');
$fileName = $fileNameBase.'.eml';
$i = 1;
while (file_exists($fileName)) {
$i++;
$fileName = $fileNameBase.'_'.$i.'.eml';
}
/* Скидываем письмо в файл */
file_put_contents($fileName, $mail);
правда этот скрипт не передает дальше в sendmail, т.к. этого пока не нужно было...
Благодарю за отзывчивость и внимание!