Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Сохранение исходящей почты, sendmail  (Прочитано 1263 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн selfchief

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Всем доброго дня! :)
Народ помогите пожалуйста накидать скрипт (желательно на баше), которые будет считывать входной поток (stdin), передавать на sendmail, и сохранять письмо в файл.
Т.к. программирую на php, не составило труда сделать это на php, но это не хорошо :)

#!/usr/bin/php
<?php
 
/* &#1055;&#1086;&#1083;&#1091;&#1095;&#1072;&#1077;&#1084; &#1090;&#1077;&#1082;&#1089;&#1090; &#1087;&#1080;&#1089;&#1100;&#1084;&#1072; &#1080;&#1079; &#1074;&#1093;&#1086;&#1076;&#1085;&#1086;&#1075;&#1086; &#1087;&#1086;&#1090;&#1086;&#1082;&#1072; */
$mail '';
$fp fopen('php://stdin''rb');
while (!
feof($fp)) {
$mail .= fread($fp512);
}
 
/* &#1050;&#1086;&#1088;&#1088;&#1077;&#1082;&#1090;&#1080;&#1088;&#1086;&#1074;&#1082;&#1072; &#1079;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1086;&#1074; */
$e preg_split('~(\r\n\r\n)|(\n\r\n\r)|(\n\n)|(\r\r)~'$mail2);
$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(':'$header2);
$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;
 
 
/* &#1043;&#1077;&#1085;&#1077;&#1088;&#1080;&#1088;&#1091;&#1077;&#1084; &#1080;&#1084;&#1103; &#1092;&#1072;&#1081;&#1083;&#1072; */
$fileNameBase dirName(__FILE__).'/mails/'.date('Ymd_His');
$fileName     $fileNameBase.'.eml';
$i 1;
while (
file_exists($fileName)) {
$i++;
$fileName $fileNameBase.'_'.$i.'.eml';
}
 
/* &#1057;&#1082;&#1080;&#1076;&#1099;&#1074;&#1072;&#1077;&#1084; &#1087;&#1080;&#1089;&#1100;&#1084;&#1086; &#1074; &#1092;&#1072;&#1081;&#1083; */
file_put_contents($fileName$mail);
правда этот скрипт не передает дальше в sendmail, т.к. этого пока не нужно было...
Благодарю за отзывчивость и внимание! :)

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28476
    • Просмотр профиля
Re: Сохранение исходящей почты, sendmail
« Ответ #1 : 04 Марта 2011, 14:21:46 »
Т.к. программирую на php, не составило труда сделать это на php, но это не хорошо :)
С чего бы "не хорошо"? Если скрипт правильно записан (i.e. не использует сомнительных языковых конструкций, типа "<?=" или "<%"), то всё в порядке.
Я постоянно на PHP пишу, если надо плотно поработать с вводом перед выдачей результата. С той же целью люди используют Python и Perl.
А это как раз твой случай.

P.S.
Отправка письма в таком случае решается одной строчкой mail(....); :)
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн selfchief

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Сохранение исходящей почты, sendmail
« Ответ #2 : 04 Марта 2011, 15:15:25 »
мне почему то кажется, что это как говорится "не комильфо" :)
Питон и Перл (кст. на перле и написан сайт с которого происходит отправка) более подходящие языки, т.к. они стоят уже дефолтно во многих дистрибутивах.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28476
    • Просмотр профиля
Re: Сохранение исходящей почты, sendmail
« Ответ #3 : 04 Марта 2011, 19:40:26 »
мне почему то кажется, что это как говорится "не комильфо" :)
Питон и Перл (кст. на перле и написан сайт с которого происходит отправка) более подходящие языки, т.к. они стоят уже дефолтно во многих дистрибутивах.
А на руби писать скрипты компиляции - комильфо?
Не загоняйся с аргументацией, а то телега впереди лошади окажется.
« Последнее редактирование: 05 Марта 2011, 01:18:08 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн selfchief

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Сохранение исходящей почты, sendmail
« Ответ #4 : 05 Марта 2011, 01:14:03 »
хм... ну спасибо Вам в том что меня убедили :)
тогда осталось дописать mail()  :)

 

Страница сгенерирована за 0.056 секунд. Запросов: 26.