IgorKa — Информационный ресурс
Немного обо всем и все о немногом, или практический опыт системного администратора.
| Пн | Вт | Ср | Чт | Пт | Сб | Вс |
|---|---|---|---|---|---|---|
| « Сен | Ноя » | |||||
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 | |||
Настройка почты ssmtp для PHP mail()
Пришлось на днях настраивать почту на тестовом веб-сервере. Нужно это для того, чтобы наше серверное приложение могло отправлять пользователям уведомления на почту. Выделенный настроенный почтовый сервер имеется, поэтому нужно было всего-навсего настроить какой-нибудь MTA на пересылку почты. Так как с админством уже завязал (да и ранее почту под линукс настраивать не приходилось), то пришлось найти несколько готовых варинатов из которых слепил свой. Собственно здесь закладка для себя (вдруг когда-нибудь пригодится).
Сервер на котором выполнялась настройка: Ubuntu 12.04 LTS.
smtp.remotemailserver.com — удаленный почтовый сервер.
dev.server.com — доменное имя веб-сервера.
По рекомендациям в интеренете решил установить там простенький МТА — ssmtp:
$ sudo apt-get install ssmtp
Затем нужно отредактировать конфигурационные файлы ssmtp:
sudo nano /etc/ssmtp/ssmtp.conf
Не разбирался зачем ключ -t (в мане написано, что он игнорируется ssmtp).
Делаем рестарт апача:
$ sudo service apache2 restart
Код проверки (PHP)
‘ . «\r\n» .
‘Reply-To: support@server.com’ . «\r\n» .
‘MIME-Version: 1.0’ . «\r\n» .
‘Content-Type: text/html; charset=utf-8’ . «\r\n» .
‘Content-Transfer-Encoding: quoted-printable’;
mail($to, $subject, $message, $headers);
?>
То есть создаем файл с расширением PHP, например, testmail.php запускаем его из командной строки:
Но из нашего веб приложения письма уходить отказались. 🙁 Смотрел логи, апача, почты, но все свелось к тому, что пришлось все удалить и настроить postfix. С ним все заработало как нужно. По настройке Postfix также нужно будет сделать себе закладочку на всякий случай…
| Спасибо за то что поделились ссылкой! | ||||||
Статьи и новости схожей тематики:
Один комментарий
Дмитрий:
Многие сейчас настраивают отправку писем на gmail и не могут найти настройки для файлов php.ini и sendmail.ini
Поделюсь своими настройками, надеюсь помогу таким же “чайникам”, коим сам и являюсь 🙂
В файле php.ini раскомментированы строки:
sendmail_path = C:\xampp\sendmail\sendmail.exe
mail.add_x_header=On
(остальные с префиксом ; перед строкой)
В файле sendmail.ini:
smtp_server=smtp.gmail.com
smtp_port=465
smtp_ssl=auto
error_logfile=error.log
debug_logfile=debug.log
auth_username=your_mail@gmail.com
auth_password=your_password
pop3_server=
pop3_username=
pop3_password=
force_sender=your_mail@gmail.com
force_recipient=
hostname=gmail.com
По состоянию на 14.03.2017 — всё работает
ОС Windows 7
Модуль Apache
Источник
Настройка во время выполнения
Поведение этих функций зависит от установок в php.ini .
| Имя | По умолчанию | Меняемо | Список изменений |
|---|---|---|---|
| mail.add_x_header | «0» | PHP_INI_PERDIR | Доступна с PHP 5.3.0. |
| mail.log | NULL | PHP_INI_PERDIR | Доступна с PHP 5.3.0. (PHP_INI_SYSTEM|PHP_INI_PERDIR) |
| mail.force_extra_parameters | NULL | PHP_INI_PERDIR | Доступна с PHP 5.0.0. (PHP_INI_SYSTEM|PHP_INI_PERDIR) |
| SMTP | «localhost» | PHP_INI_ALL | |
| smtp_port | «25» | PHP_INI_ALL | Доступна с PHP 4.3.0. |
| sendmail_from | NULL | PHP_INI_ALL | |
| sendmail_path | «/usr/sbin/sendmail -t -i» | PHP_INI_SYSTEM |
Для подробного описания констант PHP_INI_*, обратитесь к разделу Где могут быть установлены параметры конфигурации.
Краткое разъяснение конфигурационных директив.
Добавляет заголовок X-PHP-Originating-Script, который будет содержать UID скрипта и имя файла.
Путь к лог-файлу, в который будут записываться все вызовы функции mail() . Записи в логе содержат полный путь до скрипта, номер строки, адрес получателя To и заголовки.
Принудительно добавляет указанные параметры в дополнительные параметры программе sendmail. Эти параметры всегда будут заменять значение пятого параметра функции mail() , даже в безопасном режиме.
Используются только в Windows: домен или IP-адрес SMTP-сервера, к которому будет обращаться PHP при отправке почты функцией mail() .
Использутся только в Windows: порт SMTP-сервера, к которому будет обращаться PHP при отправке почты функцией mail() ; по умолчанию 25. Доступен с PHP 4.3.0.
Адрес, который будет использоваться в заголовке «From:» в письмах, посылаемых PHP в Windows. Эта директива также устанавливает заголовок «Return-Path:».
Путь до программы sendmail, обычно /usr/sbin/sendmail или /usr/lib/sendmail . configure пытается найти sendmail автоматически и установить значение по умолчанию самостоятельно, но если это не удалось, вы можете установить путь здесь.
Системы, не использующие sendmail, должны установить эту директиву в путь до обертки/заменителя sendmail. Например, пользователи » Qmail обычно устанавливают значение /var/qmail/bin/sendmail или /var/qmail/bin/qmail-inject .
qmail-inject не требует дополнительных опций для отправки писем.
Эта директива также работает и в Windows. Если она установлена, smtp , smtp_port и sendmail_from будут проигнорированы и выполнится указанная программа.
Источник
PHP mail под Windows
В этой статье я хочу рассказать об отправке почты из php скриптов под Windows.
Америку я, конечно, не открою, но надеюсь, что кому-то эта статья будет полезна или просто сэкономит время.
С точки зрения php программиста отправка почты выполняется с помощью стандартной функции mail() . И вот тут у многих начинающих разработчиков возникает проблема. Скрипт, прекрасно работающий на сервере хостера, выдает ошибки на локальном компьютере.
Обычно эти ошибки имеют примерно такое описание:
Warning: mail() [function.mail]: Failed to connect to mailserver at «localhost» port 25, verify your «SMTP» and «smtp_port» setting in php.ini or use ini_set() in E:\www\simplemail\mailer.php on line .
Дело в том, что функция mail сама по себе почту не отправляет, она просто вызывает программу sendmail, которая в дистрибутив web сервера и php интерпретатора не входит (и не должна).
Sendmail, в свою очередь, для отправки почты использует SMTP сервер.
Таким образом, чтобы php скрипт мог отправлять почту нужно установить и настроить sendmail и SMTP сервер.
Версию sendmail для Windows можно скачать здесь.
Установка и настройка выполняется в три этапа.
1) Распаковываем архив на тот же диск, где установлен php. Например, я создал папку C:\wamp\sendmail.
2) Вносим изменения в файл php.ini:
[mail function]
SMTP =
sendmail_from =
sendmail_path = «C:\wamp\sendmail\sendmail.exe -t»
Как видите, нужно только указать путь к sendmail чтобы php мог ее найти.
3) Настраиваем sendmail. Все настройки находятся в файле sendmail.ini (расположен в папке с sendmail).
Но перед тем как приступать к настройке пару слов об SMTP сервере. Вам совсем не обязательно устанавливать сервер на вашем компьютере. Многие почтовые сервисы предоставляют бесплатный доступ к своим серверам.
Ниже я покажу пример настройки sendmail для работы с SMTP сервером mail.ru, но, естественно, вы выбрать любой другой.
Итак, открываем sendmail.ini и устанавливаем следующие параметры:
smtp_server=smtp.mail.ru ; адрес SMTP сервера
smtp_port=25 ; порт SMTP сервера
default_domain=mail.ru ; домен по-умолчанию
error_logfile=error.log ; файл в который будет записываться лог ошибок
debug_logfile=debug.log ; очень полезная на этапе отладки опция. Протоколируются все операции, которые выполняет sendmail
auth_username=account_name@mail.ru ; имя вашего аккаунта
auth_password=account_password ; ваш пароль
; следующие три опции используются если перед авторизацией на SMTP сервере требуется авторизация на POP3 сервере
pop3_server=pop.mail.ru
pop3_username=account_name@mail.ru
pop3_password=account_password
; параметр для команды MAIL FROM
force_sender=account_name@mail.ru
Теперь не забудьте перезапустить web сервер, чтобы изменения вступили в силу.
Чтобы протестировать работу почты напишем простенький скрипт:
Он создает форму с тремя полями для ввода адреса, темы и содержания письма. Нажатие на кнопку «Отправить» отправит запрос этому же скрипту (строка 21).
Если данные введены, то будет вызвана функция mail (строка 13), которая и отправит письмо. В случае успешной отправки функция возвращает true, в противном случае — false.
Как видите, ничего сложного в настойке почты нет.
Источник
Как настроить php ini smtp
setting return path:
Return-path header does not work because it is not part of smtp.
on *nix -f may be set on the mail command
alternatively
some MTAs accept mbox-style «From » header on the first header line
note: no colon after «From» , must be the first header line
or you may be able to re-configure you MTA to interpret return-path headers
-f is the most reliable method but it may mean that you can’t set any other command-line option due to shell escaping problems.
also note that email formatting requirements differ between windows and everything else. sendmail expects only \n line-endings
For linux you can over-ride the default «From» for the outgoing emails by including in php.ini this line:
sendmail_path = «/usr/sbin/sendmail -t -i -f fromMe@blah.com»
The path should work for most linux installations.
On Darwin OS such as OSX (current one: 10.8.3) you need to add a specific command and option to the sendmail_path constant if you have downloaded and installed a mamp with a stack.
Indeed you can see the required libraries for PHP, Apache, MySQL in «common/lib» folder. The problem is when you run an external command using these libraries, for example «sendmail». It could be a problem if it gets the stack libraries and not the system ones (different versions, etc).
The «env -i» command clean the Stack environment variables and run «sendmail» with the system libraries.
Источник
PHP — отправка электронной почты через PHP
Дата публикации: 2017-10-19
От автора: отправка почты через PHP настраивается с помощью файла php.ini. Откройте файл php.ini, который находится в каталоге / etc/, и найдите раздел с заголовком [mail function].
Пользователям Windows нужно предоставить в этом разделе две директивы. Первая называется SMTP, она задает адрес SMTP-сервера. Вторая называется sendmail_from, она определяет ваш адрес электронной почты. Настройки для Windows должны выглядеть примерно так:
Пользователи Linux должны указать PHP местоположение своего приложения sendmail. Путь и любые требуемые ключи должны указываться в директиве sendmail_path. Настройки для Linux должны выглядеть примерно так:
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Теперь все готово.
Отправка обычного текстового сообщения
PHP использует функцию mail() для отправки электронной почты. Для этой функции необходимы три обязательных аргумента, в которых указывают адрес электронной почты получателя, тема электронного письма и само письмо, кроме того, имеются два других необязательных параметра.
Ниже приводится описание каждого аргумента.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
После вызова функции mail, она попытается отправить электронное письмо, после этого она возвращает значение true, если письмо отправлено успешно, или false, если письмо не было отправлено. В качестве первого аргумента функции mail() могут быть указаны несколько получателей, их адреса указываются списком через запятую.
Отправка HTML-письма
Когда вы отправляете текстовое сообщение с использованием PHP, то весь контент будет рассматриваться как простой текст. Даже если вы будете включать в текстовое сообщение HTML-теги, сообщение будет отображаться как простой текст, а HTML-теги не будут отформатированы в соответствии с синтаксисом HTML. Но PHP предоставляет возможность отправлять HTML-письма в формате HTML. При отправке электронных писем вы можете указать Mime-версию, тип контента и набор символов.
Источник