PHP mail () в Windows: ошибок нет, электронная почта не отправляется - PullRequest
6 голосов
/ 22 октября 2009

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

После некоторых поисков самое простое решение, с которым я столкнулся, - это фальшивый sendmail , чтобы переслать его в мою учетную запись приложений GMail / Google через 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 (). Так работает Элгг.

Ответы [ 4 ]

5 голосов
/ 22 октября 2009

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

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

Спасибо всем за ваше время!

0 голосов
/ 22 октября 2009

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

SMTP = localhost
smtp_port = 25

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

0 голосов
/ 22 октября 2009

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

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

0 голосов
/ 22 октября 2009

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

Проверьте службы (Run-> services.msc) и найдите Send Mail Transfer

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

...