Функция php mail () на localhost

У меня проблема с функцией php mail() на сервере localhost. Я не могу проверить приложение электронной почты на localhost, когда я пытаюсь отправить электронные письма с помощью функции php function 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 F:\wamp\www\product\ajax.php on line 64

Я использую сервер WAMP, и если кто-нибудь знает решение, пожалуйста, помогите мне.

Вам необходимо настроить почтовый сервер на вашем компьютере для работы почты. Если вы находитесь в Windows (что я предполагаю, что вы используете WAMP), вы можете настроить почтовый сервер Pegasus .

Другие варианты включают использование класса оболочки, такого как SwiftMailer или PHPMailer, и использование их для подключения к другому SMTP-серверу, например, к вашей учетной записи GMail. Даже если вы отправляете почтовый сервер Pegasus на свой собственный маршрут localhost, я бы порекомендовал использовать один из двух классов, упомянутых выше. Они дают вам гораздо большую гибкость и безопаснее.

Подключение к вашему SMP-серверу вашего интернет-провайдера или GMail или тому, что является самым простым путем из этого.

Проведя 2 дня на этой проблеме с функцией php mail, я понял это и помог вам сделать то же самое. Это потратило достаточно времени, давайте начнем …

PHP имеет встроенную функцию php mail, которая может использоваться для отправки почты из сценария, но эта функция ограничена, поскольку она не может подключить вас к серверу протокола SMTP. Я предполагаю, что вы используете WAML / XAMPP, на самом деле не пробовали XAMPP, но вы могли бы понять следующее:

Сначала нам нужно найти способ подключения нашего веб-сервера (wamp) к внешнему SMTP. В этом случае мы будем использовать Gmail, но до этого нам нужно загрузить / установить инструмент, который будет захватывать нашу электронную почту из сценария php и перенаправлять ее на SMTP Gmail.

  1. Сначала перейдите по адресу http://glob.com.au/sendmail/ и нажмите на загрузку sendmail.zip для загрузки.
  2. После загрузки извлеките в C:\wamp\ извлеките его как папку, означающую, что его содержимое должно находиться в папке sendmail и может быть расположено в папке C:\wamp\sendmail .
  3. Теперь в папке отправки почты щелкните правой кнопкой мыши на sendmail.ini и откройте его как администратора, так как мы собираемся изменить его содержимое.
  4. измените следующие строки

     [sendmail] smtp_server=smtp.gmail.com smtp_port= 465 smtp_ssl=ssl default_domain=localhost error_logfile=error.log debug_logfile=debug.log auth_username= enter your gmail account here auth_password= enter the password for that account here ;pop3_server= ;pop3_username= ;pop3_password= ;force_sender= ;force_recipient= hostname= localhost 

    Будьте осторожны и делайте то, что вы видите выше. Я удалил большую часть нежелательного содержимого из моего файла sendmail.ini чтобы сделать чтение немного проще.

  5. Сохранить файл

  6. Перейдите в папку вашего wamp и перейдите в bin\apache\apache[version here]\bin\php.ini и измените файл php как администратор следующим образом:

    Если вы используете блокнот, вы можете использовать поиск на вкладке редактирования или ctrl + F и ввести «почтовую функцию», чтобы быстро перейти к функции почты в файле php.ini .

     [mail function] ;For Win32 only. ;http://php.net/smtp ;SMTP = localhost ;http://php.net/smtp-port ;smtp_port = 25 ;For Win32 only. ;http://php.net/sendmail-from ;sendmail_from = ;For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ;http://php.net/sendmail-path sendmail_path = "C:\wamp\sendmail\sendmail.exe -t -i" ----> this is the changed part. 

    Примечание. Это только sendmail_path который вы должны изменить выше. Оставьте другие настройки, как вы их видите. Ваш путь может отличаться в зависимости от того, где вы извлекли папку sendmail.

  7. Сохраните этот файл php.ini

  8. Вернитесь к C:\wamp\bin и выберите php\php[version here]\php.ini и отредактируйте путь sendmail, как вы это делали выше, и сохраните файл как администратор / или перед тем, как открыть его, откройте его как администратора по праву щелкающий

  9. Запустите wampserver в качестве администратора, и когда он станет зеленым, включите следующее:

    Щелкните левой кнопкой мыши по зеленому значку и перейдите в php -> php extensions -> php_sockets (нажмите, чтобы иметь черный чек на нем)

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

    Если значок становится зеленым, пришло время включить apache ssl_module, перейдя к икоме apache, когда вы нажмете на значок зеленого wampserver. Вы можете найти это в модулях Apache.

    Когда вы закончите с тремя шагами выше выхода и снова запустите wampserver в качестве администратора для внесения изменений.

  10. Вернитесь в извлеченную папку sendmail и щелкните правой кнопкой мыши на sendmail.exe
    Перейдите к его свойствам -> совместимость -> измените настройки для всех пользователей -> режим совместимости [измените на Windows XP (пакет обновления 3)] -> Запустите эту программу как администратор [установите этот флажок].

    Сохранить и применить.
    Мы должны были сделать это, чтобы каждый раз, когда мы вызываем приложение sendmail, оно запускается как администратор.

  11. Теперь нам нужно настроить учетную запись gmail для работы с этим приложением sendmail. Войдите в учетную запись gmail и в правом верхнем углу нажмите на передачу, чтобы выбрать настройки. При настройке перейдите на вкладку Пересылка и POP / IMAP и включите IMAP. Сохранить изменения

  12. Наконец вернитесь в свой почтовый ящик, в правом верхнем углу рядом с вашим адресом электронной почты указана маленькая стрелка, нажмите на нее, чтобы выбрать «Моя учетная запись». Если у вас этого нет, вы можете попробовать нажать на свой профиль, чтобы выбрать «Моя учетная запись».

    Перейдите на вкладку Вход и безопасность и прокрутите страницу вниз. Вы найдете «Разрешить менее безопасные приложения» и включите его. В основном это было бы отключено.

  13. Это все, что вам нужно сделать, чтобы теперь вы могли отправлять электронную почту с ваших php-скриптов на localhost. Теперь вы можете попробовать свою функцию mail() с 4 минимальными параметрами и посмотреть. Надеюсь это поможет. Проголосуйте, если это поможет, поэтому я могу потратить время на публикацию более интересных решений.

Это хорошо известная проблема с использованием mail() в Windows, где обычно нет локальной службы SMTP. Как говорится в сообщении об ошибке, вам необходимо определить параметры SMTP в вашем php.ini чтобы поговорить с почтовым сервером, через который вы можете отправлять исходящие сообщения с аутентификацией или без нее. См. Документы mail ().

Попробуйте настроить почтовый сервер для localhost. В противном случае он не будет работать в localhost.