Меню Рубрики

Установка sendmail для php

Настройка sendmail под Windows

Данная статья входит в цикл статей, посвященных установке веб сервера на windows.

Установка веб сервера на windows
Настройка и защита apache под windows
Бесплатный ДНС сервер
Настройка php
Настройка mysql
Настройка phpmyadmin
Настройка sendmail (эта статья)
Настройка ftp сервера FileZilla

В этой статье я расскажу как установить и настроить sendmail на домашнем сервере под windows.
Для начала скачайте комплект sendmail.
Если у вас уже стоит sendmail можете его удалить, а на его место скопировать скаченные файлы.
Особенно это касается тех, кто устанавливал сервер с помощью xampp.
Дело в том, что в последних версиях xampp лежит новая версия sendmail, лично я так и не смог его запустить, к тому же он работает с уже другим типом конфигурации.
Возможно проблемы с этим новым sendmail и будут решены в дальнейшем, а пока предлагаю использовать старый проверенный вариант, который работает как «трактор».
Так же в архиве лежит две библиотеки, с помощью которых sendmail может работать с защищенными соединениями TLS, типа почты гугла(gmail).

Скачали архив, распаковали, закачали файлы в папку sendmail, если такой папки нет, создайте ее.
Для xampp это путь /xampp/sendmail.
Теперь открывайте настройки sendmail.ini, в архиве находится пример этого файла с русскими комментариями.
Привожу пример файла настроек

; конфигурационный файл sendmail

; здесь укажите сервер исходящей почты
smtp_server=smtp.mail.ru

; порт smtp, если обычный режим отправки, то порт будет 25
; если сервер работает в защищенном режиме (TLS), то порт 465, например почта гугла работает через 465 порт
smtp_port=25

; домен по умолчанию (совсем не обязательно)
;default_domain=local

; лог ошибок
error_logfile=error.log

; лог отправки, необходим на стадии тестирования. содержит весь текст переговоров с сервером при отправке писем.
debug_logfile=debug.log

; Если smtp сервер с авторизацией, укажите логин пароль(без кавычек), если без авторизации ничего не пишите
auth_username=
auth_password=

; если перед отправкой почты сервер требует авторизацию через POP, заполните эти поля
;pop3_server=
;pop3_username=
;pop3_password=

; email адрес, от которого идет отправка, вставится в заголовок «From: »
; если отправка писем идет через mail.ru, здесь обязательно должен быть адрес, через который произведена авторизация.
force_sender=

; хост, который указывается при авторизации в команде ehlo/helo
; указывайте домен, через который авторизуетесь
hostname=mail.ru

Вносите свои данные, логин-пароль и т.д. и все готово.
Сейчас настройте PHP, чтобы он мог использовать sendmail.
Откройте php.ini и найдите следующие строки

[mail function]
; SMTP = localhost
; smtp_port = 25
; sendmail_from = postmaster@localhost
sendmail_path = «\xampp\sendmail\sendmail.exe -t»

Первые строки указанные здесь закройте комментарием как показано (они не нужны), нужна только последняя строка указанная здесь, это путь до sendmail. Укажите свой путь и снимите комментарий (;) если он стоит.
Теперь перегружайте сервер и все готово, функция mail() должна работать.
Если возникают проблемы с отправкой почты, смотрите файлы error.log и debug.log в sendmail(если вы их конечно включили в настройках sendmail.ini)

Другие статьи, посвященные запуску сервера на windows

Установка веб сервера на windows
Настройка и защита apache под windows
Бесплатный ДНС сервер
Настройка php
Настройка mysql
Настройка phpmyadmin
Настройка sendmail (эта статья)
Настройка ftp сервера FileZilla

Комментарии

03.12.2010 Andrei
Если у мя сервер www.server.ru , то в
smtp_server=smtp.server.ru указываю так?

04.12.2010 админ
Andrei, совсем не обязательно.
Смотря как настроен smtp сервер.
Чаще всего mail.server.ru или smtp.server.ru. А может быть и без поддомена, например просто server.ru.
Это надо узнать там, где smtp сервер находится.

05.12.2010 Sheg
Письмо почему то не доходит.
В error.log:
SSL is not available on this server.
В чём проблема, smtp Гугловский.

05.12.2010 админ
Sheg, в ошибке сказано, что ваш сервер не поддерживает SSL соединение. Гугловская почта работает только в защищенном режиме SSL, поэтому вам нужно установить поддержку SSL для sendmail.
http://webi.ru/webi_files/sendmail_ssl.html — здесь комплект с поддержкой SSL.

09.12.2010 Вячеслав.
Все настроил, при отправке письма скрипт ошибок не выдает — но в итоге, письмо для адресата так и не доходит.
В чем может быть проблема ?
Спасибо.

09.12.2010 админ
Вячеслав, включите логи.
Лог ошибок и лог отправки и посмотрите в эти файлы.
И сразу все будет ясно.

10.12.2010 Вячеслав.
Логи включены — ни каких сообщение об ошибках нет.

10.12.2010 Evengar
Вчера всё работало норм, сегодня письмо не доходит через мейл.ру. Ошибка Socket Error # 10054 Connection reset by peer.

11.12.2010 админ
Вячеслав, ну а в debug.log что?
Там ошибок нет, по этим логам письмо отправляется?

11.12.2010 админ
Evengar, ну если вчера отправлялось, а сегодня нет, значит проблемы с вашей связью или с сервером mail.ru

21.12.2010 Алексей
У меня sendmail даже на *.exe никак не реагирует, не говоря о скриптах, и в логах тож ниче нет(((

21.12.2010 админ
Алексей, можно подробнее? Что значит «sendmail на *.exe не реагирует»?

26.12.2010 Виталий
debug — 31457280 250-8BITMIME 250-AUTH PLAIN LOGIN 250 STARTTLS
10.12.26 11:50:44 ** Authenticating as er45633
10.12.26 11:50:44 >> STARTTLS
10.12.26 11:50:44
10.12.26 11:50:44 ** Disconnected.
10.12.26 11:50:44 ** Disconnected.
10.12.26 11:50:44 ** Disconnected.
10.12.26 11:50:44 ** Socket Error # 10054 Connection reset by peer.

и письмо не отправляется в чем причина , что не так.

26.12.2010 админ
Виталий, что-то не совсем понятно. вроде начинается защищенное соединение и обрывается.
с другими серверами пробовали коннектиться?

04.01.2011 Алексей К.
Та же проблема с ошибкой:
«Socket Error # 10054 Connection reset by peer.»

И еще, по моему на Unix такой ошибки нету. Но письма все-равно не отправляются.

04.01.2011 Алексей К.
Спасибо вам большое .
Все получилось при использовании другого сервера почты!

04.01.2011
И еще вопрос,до каких размеров будет расти debug.log ? Или его можно отключить?

04.01.2011 админ
конечно лог отправки и лог ошибок можно отключить, просто удалите эту строку из конфига или закройте комментарием (;)

05.01.2011 Алексей К.
Спасибо еще раз! С Новым годом.

10.01.2011 Alex
Подскажите пожалуйста. Я первый раз пытаюсь настроить sendmail.
Вообщем если я правильно понял настройки которые в sendmail.ini это для почты с которой будет отправляться письма, а адресс почты который указан в mail(); это куда будет производиться отправка. Если да, все делаю по примеру, почта у меня на гугле:
smtp_server=smtp.gmail.com
smtp_port=587
auth_username=name@gmail.com
auth_password=pass
force_sender=name@gmail.com
hostname=gmail.com

11.01.10 21:33:22 ** — MESSAGE END —
11.01.10 21:33:22 ** Connecting to smtp.gmail.com:465
11.01.10 21:33:23 ** Disconnected.
11.01.10 21:33:23 ** Disconnected.
11.01.10 21:33:23 ** Disconnected.
11.01.10 21:33:23 ** Error connecting with SSL.

11.01.10 21:33:23 : Error connecting with SSL.

источник

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.

Как видите, ничего сложного в настойке почты нет.

источник

Sendmail-заглушка для PHP и на PHP

Каждый раз настраивая локальный вебсервер, сталкиваюсь с вопросом о заглушке для Sendmail.

Есть прекрасное решение для Windows: fake sendmail for windows (sendmail.exe) http://glob.com.au/sendmail/
На хабре есть статья об этом решении: PHP mail под Windows http://habrahabr.ru/post/26518/
Ещё одно решение под Windows: Test Mail Server Tool http://www.toolheap.com/test-mail-server-tool/
Так же есть статья для линуксоидов: Sendmail-заглушка для Linux http://habrahabr.ru/post/49665/

Лично мне больше понравилось решение на чистом PHP, о котором и пойдёт дальнейшее описание.

Особенность этого решения в том, что для его настройка минимальна, можно даже обойтись без самого файла, если конечно вам нет нужды знать содержимое сообщения. На мой взгляд, такой метод стоит того, что бы о нём знали другие разработчики PHP.

Вопрос в том, что является вашим приоритетом как разработчика, ваши потребности от заглушки, а также ваш уровень знаний и умений.

Из плюсов:

  • Отсутствие сторонних сервисов
  • Кроссплатформенное решение для OS на которой установлен PHP
  • Минимальный размер файла заглушки
  • Минимальная настройка
  • Вся логика заглушки доступна для редактирования на PHP
  • Сохранение сообщения в файле

Из минусов:

  • Отсутствие пересылки на реальный почтовый ящик
  • Отсутствие удобного доступа к отправленным сообщениям

Список аргументов и возможностей заглушки:

  • —dir — Папка для файлов
  • —file — Сохранять каждое сообщение в конкретном общем файле
  • —prepend — Добавлять новое сообщение в начало общего файла
  • —open — Автоматически открывать файл сообщения в Notepad

Параметры для PHP.INI файла:

Если путь к php.exe прописан в PATH, то можно не указывать его в PHP.INI иначе желательно изменить php.exe на \php.exe

На линукс можно сразу указать путь к файлу, не забыв предварительно сделать его запускаемым: chmod 755 sendmail.php

Как я и обещал, есть также возможность обойтись совсем без файла.

Либо использовать упрощённый вариант решения

источник

Установка sendmail для php

Поведение этих функций зависит от установок в 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
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.

Адрес, который будет использоваться в заголовке «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 (настройка sendmail на 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 сервер, чтобы изменения вступили в силу.

источник

Читайте также:  Установка mail ru мой мир

Добавить комментарий