четверг, 23 ноября 2017 г.

Настройка сохранения почты в файл Apache2 linux

Для локальной веб-разработки важно проверять отправку почтовых сообщений локально, например сохраняя их в файл.
На хабре есть на эту тему хорошая статья, в которой автор создает фэйковый скрипт записи почтового сообщения в файл, после чего этот скрипт передается в sendmail_path в php.ini и все исходящие сообщения вашего локального сайта сохраняются в указанную вами директорию
Сама статья вот.
SH скрипт вот ( я от себя добавил расширение .eml для файлов почты ):

#!/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.txt"
while read line 
do 
echo $line >> $name
done 
chmod 777 $name
/bin/true 
 
Некоторые фреймворки могут самостоятельно зашифровывать сообщение с помощью функции quoted_printable_encode. В этом случае будет достаточно проблематично прочитать сообщение с помощью стандартного просмотрщика почтовых сообщений.
Для таких случаев можно придумать небольшой скрипт вроде этого:

<?php
echo '<meta charset="utf-8">';

$f = isset($_GET['id']) ? $_GET['id'] : null;
$standartPath = '/var/mail/sendmail/new/letter_';

if ($f) {
    $file = file_get_contents($standartPath . $f . '.eml');
    echo quoted_printable_decode($file);
} else {
    echo 'id of file required!';
}
 
Который будет автоматически декодировать сообщения и вы сможете их просмотреть без труда в браузере, например вот по такому адресу: http://localhost/urldecode.php?id=21, если кончено этот скрипт с соответствующим именем расположен в корневой папке вашего локального сервера.

Комментариев нет:

Отправить комментарий

Linux командная строка узнаем оставшееся место

Чтобы посмотреть общую картину того, сколько места осталось в системе можно выполнить команду: df -h Чтобы вывести на экран сколько мес...