Linux и серверы

Ubuntu | LAMP. Отправка почты функцией PHP mail(). | Блог. Личные записки.

Материал перенесён из старой базы знаний ATC-IP и оформлен в едином стиле нового сайта.

OpenSUSE
Ubuntu
Windows
Без рубрики
Март 10, 2011
LAMP. Отправка почты функцией PHP mail().
Если после установки например LAMP сервера у вас не работают скрипты с функцией php mail(), точней письма просто не отправляются, то это значит что вам нужно установить почтовый сервер, например Postfix. Но Postfix — это огромный с кучей возможностей почтовый сервер, и мне он был не к чему. Мне нужно было лишь заставить работать функцию mail(), точней просто отправлять письма с сервера, например при регистрации, или заказе товара в интернет-магазине, и т.д. Поискав информацию, я нашел очень хороший, минимальный MTA, для таких целей. Таким оказался — SSMTP. Нету не чего лишнего, прост в установке, и настройке. Давайте установим и настроем ssmtp для отправки писем, например через gmail.
Для установки SSMTP выполните в терминале:
sudo apt-get install ssmtp
Отредактируем файл-конфигурации:
sudo gedit /etc/ssmtp/ssmtp.conf
Добавим туда следующие строчки, заменяя их на свои данные:
root=youremailhere@gmail.com
mailhub=smtp.gmail.com:587
AuthUser=yourgmailusername
AuthPass=yourgmailpassword
UseSTARTTLS=YES
По-сути, по таком же примеру можно настроить почту и под любого другого сервиса почты.
Есть еще и другой способ, ниже я приведу пример настроек для
yandex.ru
sudo gedit /etc/ssmtp/revaliases
Пишем следующие строчки, и не забываем их изменить под свои данные
root:
pupkin
@yandex.ru:smtp.yandex.ru:465
UserUbuntu:pupkin
@yandex.ru:smtp.yandex.ru:465
www-data:pupkin
@yandex.ru:smtp.yandex.ru:465
Сохраняем и закрываем.
Редактируем конфиг:
sudo gedit /etc/ssmtp/ssmtp.conf
И все содержимое заменяем следующим:
hostname=localhost
FromLineOverride=NO
AuthUser=
pupkin
@yandex.ru
AuthPass=
12345
mailhub=smtp.yandex.ru:465
UseTLS=YES
Подставляем свои данные, сохраняем, и закрываем.
Далее откроем php.ini и отредактируем его:
sudo gedit /etc/php5/apache2/php.ini
находим параметр:
sendmail_path
, раскоментируем его и добавляем путь к ssmtp:
sendmail_path = /usr/sbin/ssmtp -t
Сохраняем изменения и перезагружаем апач:
sudo /etc/init.d/apache2 restart
Sendmail
Но существует и второй способ, и он еще проще. Но вся проблема в том, что он не у всех работает, иногда нужно звонить провайдеру, или теребенить в тех поддержку, чтоб прописали
PTR запись
Установим sendmail
sudo apt-get install sendmail
отредактируем php.ini И дадим знать для php, что мы будем отправлять почту, через sendmail
sudo gedit /etc/php5/apache2/php.ini
в параметре sendmail_path пропишем следующее:
sendmail_path = /usr/sbin/sendmail -t
Перезагрузим веб-сервер
sudo /etc/init.d/apache2 restart
Пост обновлен! 28.12.2011
Похожие записи
Установка и настройка LAMP (Apache, MySQL, PHP)
Screenlets — виджеты для рабочего стола.
Установка драйвера Nvidia GeForce 8500GT
Полезное дополнение к Nautilus
Mozilla Thunderbird. Русификация. Перенос профиля из windows в ubuntu
Автор:
Игорь Овсейчук
Рубрика
Ubuntu
Метки:
mail
mta
php
postfix
sendmail
ssmtp
почта
Gimp 2.7 — однооконный графический редактор
Mozilla Thunderbird. Русификация. Перенос профиля из windows в ubuntu
Вы можете
оставить комментарий
, или отправить
трэкбек
на ваш сайт.
40 Комментариев к “LAMP. Отправка почты функцией PHP mail().”
Андрей
11.03.2011 в 04:08
Круто :3
Буду иметь ввиду…
Ответить
Игорь Овсейчук
22.03.2011 в 13:49
Сам несколько часов мучался с Postfix, пока не узнал о ssmtp
Ответить
Guedda
18.10.2011 в 15:06
Добрый день.
Попробовал сегодня второй легкий способ (что с sendmail) на своем LAMP (Ubuntu 11.10)
Во-первых, очень долго отрабатывает скрипт отправки, а во-вторых, на почту все-таки не приходит письмо, которое должно приходить.
Не знаете, в чем может быть проблема?
Ответить
Игорь Овсейчук
18.10.2011 в 15:09
Проверьте почту в папке спам. Скорей всего письмо попало туда. По крайней мере у меня так было. Еще можете проверить на всякий случай логи.
Ответить
Guedda
18.10.2011 в 15:12
В спаме тоже нет. А какие именно логи смотреть, если не сложно, скажите?
И еще подскажите, зачем параметр -t указывать в php.ini?
Ответить
Игорь Овсейчук
18.10.2011 в 15:22
var/log/mail.err попробуйте без -t
Ответить
Игорь Овсейчук
18.10.2011 в 15:27
Позвонить +7 (343) 382-33-16