Почему функция mail () PHP не работает с установкой по умолчанию WAMP?

У меня установлена ​​установка WAMP Server 2.0 по умолчанию.

Я пытаюсь отправить электронное письмо с помощью этого простого скрипта:

<?php if (mail('my_email@gmail.com', 'My Title', 'Some Text')) { echo "OK"; } else { echo "Why ??"; } ?> 

К сожалению, я получаю следующее предупреждение:

Предупреждение: mail () [function.mail]: Не удалось подключиться к почтовому серверу на порту «localhost» 25, проверьте настройки «SMTP» и «smtp_port» в php.ini или используйте ini_set () в C: \ My_Path \ send_email. php on line 3 Почему?

Что может быть причиной этого?

Я ожидал, что отправка электронной почты будет очень простой задачей … 🙁

Чтобы иметь возможность отправлять электронную почту, вам нужен сервер исходящей почты (MTA). В большинстве Linux-систем по умолчанию используется один, и PHP будет использовать его, отправив почту в sendmail, приложение / псевдоним Linux для отправки почты в зависимости от того, какой MTA вы установили.

По умолчанию Windows не включает MTA. В Windows, чтобы отправлять почту с PHP, вам нужно иметь доступ к некоторому исходящему почтовому серверу и указать PHP адрес и порт. Это делается в php.ini, используя параметры SMTP и smtp_port . По умолчанию на localhost порт 25 . Если вы не настроили почтовый сервер на этом компьютере самостоятельно, это не удастся.

Например, если ваш интернет-провайдер предоставляет вам сервер исходящей почты, вы можете использовать его адрес и номер порта. Или, если вы серьезно относитесь к отправке почты, вы настроили свой собственный почтовый сервер на локальном компьютере или где-нибудь в вашей локальной сети.

Краткий ответ: SMTP-сервер не настроен для локального компьютера (localhost). Windows не поставляется со встроенным SMTP-сервером, готовым выйти из коробки. Вы можете пересылать почту через другой хост (используя директиву SMTP php.ini), но редко вы найдете открытое реле для тестовых почтовых сообщений.

Вместо использования mail() вы можете использовать скрипт, например PHPMailer, который может подключаться непосредственно к серверу исходящей электронной почты с надлежащей аутентификацией. Вот быстрый фрагмент для Gmail (хотя он не является полным) и полный пример .

Вы можете использовать «Fake Sendmail»: http://glob.com.au/sendmail/

Таким образом, вам не нужен SMTP-сервер на тестовой машине, вам нужно только установить путь к программе в php.ini

Чао! Стефан