Приветствую Вас Гость • Регистрация • Вход
Суббота, 19.10.2019
Главная » 2012 » Декабрь » 20 » PHP mail под Windows. Отправка почты из PHP скриптов
08:21
PHP mail под Windows. Отправка почты из PHP скриптов
Здравствуйте!!!Рад видеть на страницах моего блога уважаемые читатели и подписчики!

В этой статье я хочу рассказать об отправке почты из 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:


Code
[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
hostname=mail.ru
Теперь не забудьте перезапустить web сервер, чтобы изменения вступили в силу.
Чтобы протестировать работу почты напишем простенький скрипт:

Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Simple Mail</title>
</head>
<body>
$addr = $_POST['addr'];
$theme = $_POST['theme'];
$text = $_POST['text'];
if (isset($addr) && isset($theme) && isset($text)
  && $addr != "" && $theme != "" && $text != "") {
  if (mail($addr, $theme, $text, "From: vova_33@mail.ru")) {
  echo "

Сообщение отправлено

";
  }
  else {
  echo "

При отправке сообщения возникла ошибка

";
  }
}
?>
<form action="mailer.php" method="post">
<p>
  <label for="addr">eMail:</label>
  <input type="text" name="addr" id="addr" size="30" />
</p>
<p>
  <label for="theme">Тема письма:</label>
  <input type="text" name="theme" id="theme" size="30" />
</p>
<p>
  <label for="text">Текст письма:</label>
  <textarea rows="10" cols="20" name="text" id="text"></textarea>
</p>
<p>
  <input type="submit" value="Отправить" />
</p>
</form>
</body>
</html>
Категория: PHP | Просмотров: 1476 | Добавил: Samosval |Рейтинг: 5.0/1


Всего комментариев: 0
avatar
    Яндекс.Метрика
Сайт создан в системе uCozЯндекс.Метрика