PHP mail() в Windows:ошибок нет, электронное письмо не отправлено

StackOverflow https://stackoverflow.com/questions/1606086

Вопрос

В настоящее время я пытаюсь отладить веб-сайт на базе Elgg (я его не разрабатывал), и я хотел бы отправлять электронные письма непосредственно с локального компьютера разработки (WinXP).Я запускаю WAMP с Apache 2.2.11 и PHP 5.3.0

После некоторых поисков самое простое решение, с которым я столкнулся, - это использование поддельная отправка электронной почты переслать его в мою учетную запись GMail / Google apps через SMTP и позволить ему выполнить отправку.Проблема в том, что я не получаю никаких ошибок вообще, но электронное письмо не отправляется.

Вот что я сделал:

  • Скопировал sendmail.exe и файл sendmail.ini во вложенную папку в WAMP
  • Настроил его через sendmail.ini (настройки конфигурации в порядке)
  • Отредактировал php.ini, чтобы добавить путь к sendmail.exe
    sendmail_path = "C:\Program Files\wamp\bin\sendmail\sendmail.exe -t"
  • Прокомментировал настройки SMTP для Windows в php.ini
    ; SMTP = localhost
    ; smtp_port = 25
    ; sendmail_from = xxx@domain.com
    ; mail.force_extra_parameters =

Файл mail.log показывает следующее:

mail() on [C:\Program Files\wamp\www\mail.php:9]: To: xxx -- 
Headers: From: xxx  Reply-To: xxx  X-Mailer: PHP/5.3.0

Я предполагаю, что проблема заключается в том, что опция Windows по умолчанию (для указания сервера, а не утилиты sendmail) не переопределена.В phpinfo() Я все еще получаю SMTP -> localhost и smtp_port -> 25 варианты, даже несмотря на то, что я их прокомментировал.

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

Спасибо!

P.S.Пожалуйста, не предлагайте PHPMailer и тому подобное, потому что я должны используйте функцию mail().Вот как работает Элгг.

Это было полезно?

Решение

В конце концов, я заставил это сработать.Проблема заключалась в том, что В PHP была ошибка при разборе ini-файлов с пробелами в пути (для sendmail).Это было исправлено в версии 5.3.0, но в руководстве не было никакой информации по этому поводу.

Итак, да, в Windows можно использовать sendmail с PHP : D.

Спасибо вам всем за уделенное время!

Другие советы

Убедитесь, что на вашем локальном компьютере запущена служба SMTP и открыт SMTP-порт (25).

Проверьте службы (Выполнить->services.msc) и найдите пункт Отправить почтовую передачу

Если вы не можете найти SMTP в списке служб, вы должны установить его:Чтобы добавить, Запустите->appwiz.cpl-> Добавить Удалить компоненты Windows-> IIS-> Подробности-> SMTP

Я не уверен, помогает это или нет, то, что я обычно делал в этих сценариях, состояло в том, чтобы настроить outlook на моем компьютере и настроить его на получение электронных писем от pop каждые 5 минут или около того, таким образом, мой ip / компьютер был аутентифицирован против pop, и если я просто установлю :

SMTP = localhost
smtp_port = 25

в php.ini функция почты работала нормально.Итак, в вашем случае просто настройте свой outlook на работу с pop и используйте этот smtp в php.ini, и, надеюсь, это должно сработать.Однако я не тестировал этот will GMail.

P.S.Пожалуйста, не предлагайте PHPMailer и тому подобное, потому что я должен использовать функцию mail().Вот как работает Элгг.

...если только вы не используете плагин, который изменяет это поведение:
http://community.elgg.org/pg/plugins/costelloc/read/16498/phpmailer

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top