Почтовая заглушка для xampp

1240Оказалось, что в xampp нет почтового демона. А тестировать отправку почты надо..

Мы будем исходить из моих настроек расположения xampp.

Создаем скрипт /opt/lampp/etc/fakesendmail.sh

#!/bin/sh 
prefix="/opt/lampp/var/mail/sendmail/new"
numPath="/opt/lampp/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.txt"
while read line 
do 
echo $line >> $name
done 
chmod 777 $name
/bin/true 

затем выполняем команды

sudo chown root:root /opt/lampp/etc/fakesendmail.sh
sudo chmod 755 /opt/lampp/etc/fakesendmail.sh

Далее поочередно выполняем в терминале следующее

sudo mkdir /opt/lampp/var/mail/sendmail
cd /opt/lampp/var/mail/sendmail
sudo mkdir cur
sudo mkdir new
sudo mkdir tmp
sudo chmod -R 777 /opt/lampp/var/mail/sendmail

теперь нужно прописал путь к нашему fakesendmail в php.ini
у меня он лежит тут /opt/lampp/etc/
пропишем в нем строку

sendmail_path = /opt/lampp/etc/fakesendmail.sh

теперь сделаем то, о чем я лично ранее даже не подозревал: настроим сбор почты, чтобы наши письма мы видели человеческим способом, а не так, как я раньше на денвере – тупо открывая файлы в папке.

Для этого нам понадобится почтовая программа Evolution

В ней создадим новую учетную запись. Указываем любой email, например, xampp@text.com. Далее следует выбрать тип сервера «Почтовые каталоги в формате Maildir» и в качестве пути к каталогу с почтой нужно указать «/opt/lampp/var/mail/sendmail». В диалоговом окне «Отправка почты» нужно указать тип сервера «Sendmail».

Если xampp был запущен – перезапустите его. Напишите какой нибудь скрипт, отправляющий почту

пример с php.net

<?php
$to      = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?>

запустите Evolution и проверьте почту, должно получиться такое
1234