Při zavolání funkce mail v PHP se spustí program umístěný nejčastěji v /usr/sbin/sendmail na Ubuntu/Debian. Samozřejmě si sendmail na Linux můžete nainstalovat pomocí
apt-get install sendmail
Pro mě je výhodné, když se mi email uloží do souboru a můžu si ho prohlédnout. Navíc to bezpečně funguje, i když nejsem vůbec na internetu, a taky si tím nezaneřádím schránku.
Windows a XAMPP
XAMPP obsahuje v základní instalaci mailtodisk prográmek, který vám odeslané maily uloží. V php.ini souboru naleznete následující řádky. Po odeslání mailu se spustí program mailtodisk.exe a email bude uložen do souboru v C:\xampp\mailoutput nebo C:\xampp\apache\mailoutput.
; Soubor C:\xampp\php\php.ini sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
Linux a vlastní shell skript
Stejně jako na Windows, i na Linuxu je v php.ini stejný řádek, který obsahuje adresu nejčastěji /usr/sbin/sendmail. Zde také umístíme náš skript a dáme mu práva spouštění.
; Soubor /etc/php5/apache2/php.ini sendmail_path = /usr/sbin/sendmail
Nesmíme také zapomenout vytvořit složku do které se maily budou ukládat a nastavit ji právo zápisu. Poté můžete vyzkoušet odeslat email v PHP pomocí funkce mail.
# Vytvoříme soubor /usr/sbin/sendmail a vložíme do něj skript níže sudo touch /usr/sbin/sendmail # nastavíme mu právo spouštění všemi uživateli sudo chmod 755 /usr/sbin/sendmail # Vytvoříme složku pro log a nastavíme ji právo zápisu všemi sudo mkdir /var/log/sendmail sudo chmod 777 /var/log/sendmail
Do souboru /usr/sbin/sendmail vložíme tento skript
#!/bin/bash LOG_DIR=/home/pavel/mailLog LOG_FILE="$/$(date "+%Y-%m-%d %H:%M:%S").log" PARAMS="" CONTENT="" for var in "$@" do PARAMS="$${var} " done while read line; do CONTENT="$${line}\n" done < /dev/stdin echo -e "Parameters:\n$\n\nContent of email:\n$" >> "$LOG_FILE"
Nyní můžeme odeslat email, pokud nalezneme soubor v daném adresáři, udělali jsme vše správně a je hotovo.
mail("pavel.kutac@gmail.com", "test", "test");
Máte lepší řešení, nebo se chcete podělit s tipy? Dejte nám vědět do komentářů
K tomuto článku již není možné přidávat další komentáře