Здравствуйте, все наверно пользовались отладочной заглушкой Денвера для получения почты, отправляемой функцией mail(), а вот я с недавнего времени заинтересовался дистрибутивом openSUSE 10.3 и он мне понравился, так что постепенно перехожу на эту операционную систему (Linux), но пока еще не уверенно себя чувствую, может кто-нибудь знает как там организовать аналог заглушки Денвера для mail()? Программа sendmail - очень сложная, может кто-нибудь знает настройки для того, чтобы получить результат аналогичный Денверовскому, чтоб при использовании функции mail() почта складывалась в отдельную папку, естественно все это на локальном сервере Apache, для тестирования скриптов Тогда может это просто можно как-то сделать?
Только что решал эту проблему... Почему-то в сети ничего не нашёл... :roll: Сделал следующее: В файл fake_sendmail.sh записал: Код (Text): #!/bin/sh prefix="/путь/к/папке/с/письмами" if [ ! -f $prefix/num ]; then echo "0" > $prefix/num fi num=`cat $prefix/num` num=$(($num + 1)) echo $num > $prefix/num name="$prefix/letter$num.txt" while read line do echo $line >> $name done /bin/true Добавляем права на исполнение: chmod +x fake_sendmail.sh Папке с письмами я дал права 777 chmod 777 folder Далее правим php.ini: sendmail_path = /путь/к/fake_sendmail.sh Вот и всё. У меня теперь функция mail() успешно складирует письма в папочку в виде файлов letter##.txt
Большое спасибо за скриптик. Долго мучался - он создаёт файлы, которые не понимаются, как .eml Ни thunderbirdm ни kmail не видел содержания, если письмо в HTML формате. Разобрался - этот скрипт срезает все пробелы перед строками. Потому в таком важном месте, как Код (Text): Content-Type: multipart/alternative; boundary="b1_83c24793545998816659d3b64bd37dfa" в результирующем файле оказывается Код (Text): Content-Type: multipart/alternative; boundary="b1_83c24793545998816659d3b64bd37dfa" А пробел/табуляция очень важен перед boundary="b1_83c24793545998816659d3b64bd37dfa" Чтобы обрабатывало, как надо, надо заменить весь цикл Код (Text): while read line do echo "$line" >> $name done на Код (Text): cat >> $name Тогда ничего не обрежется. Всё вместе: Код (Text): #!/bin/sh prefix="/var/mail/sendmail/new" numPath="/var/mail/sendmail" if [ ! -f $numPath/num ]; then echo "0" > $numPath/num fi num=`cat $numPath/num` num=$(($num + 1)) echo $num > $numPath/num name="$prefix/letter_$num.eml" cat >> $name chmod 777 $name /bin/true