Так вышло, что многие провайдеры и ДЦ блокируют 25й порт для отправки почты. Возможно у вас нет возможности и желания настраивать отправку почты с вашего сервера посредством exim или sendmail, на помощь приходит msmtp
Для Centos 6.5 установка выполняется так:
yum install msmtp
На Ubuntu/Debian установка при помощи apt-get:
apt-get install msmtp
Для Linux машин:
sudo pacman -S msmtp
Конфигурируем
vi ~/.msmtprc
или
nano ~/.msmtprc
Добавляем одно или все конфиги друг за другом вписывая свои настройки:
account yandex
logfile /var/log/msmtp.log
host smtp.yandex.ru
port 587
from [email protected]
keepbcc on
auth on
user [email protected]
password пароль
tls on
tls_starttls on
account yahoo
tls on
tls_starttls off
tls_certcheck off
auth on
host smtp.mail.yahoo.com
user user1
from [email protected]
password yourYahooPa5sw0rd
account gmail
tls on
tls_certcheck off
auth on
host smtp.gmail.com
port 587
user [email protected]
from [email protected]
password yourgmailPassw0rd
Далее:
chmod 600 ~/.msmtprc
Перед тестированием функции, делаем тестовое письмо:
echo -e «From: [email protected] \n\
To: [email protected] \n\
Subject: Hello World \n\
\n\
This email was sent using MSMTP via hd.zp.ua.» >> sample_email.txt
Теперь можно попробовать отправить письмо:
cat sample_email.txt | msmtp —debug -a gmail [email protected]
Обратите внимание, что необходимо выбрать при помощи какого конфига отправлять почту -a gmail
Можно также проверить отправку почты так:
echo «hello from hd.zp.ua.» | msmtp —debug -a default [email protected]
cp -p ~/.msmtprc /etc/.msmtp_php
chown www-data:www-data /etc/.msmtp_php
Даём права Apache, у вас может работать от другого пользователя, например apache:apache
Редактируем php.ini:
nano /etc/php5/php.ini
или
nano /etc/php.ini
И редактируем sendmail_path =
sendmail_path = «/usr/bin/msmtp -C /etc/.msmtp_php —logfile /var/log/msmtp.log -a gmail -t»
Создаём лог файл
touch /var/log/msmtp.log
chown www-data:www-data /var/log/msmtp.log
и перезагружаем Apache:
service httpd restart