| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Проблема с mail |
| Автор: Serebrus 8.10.2008, 13:45 | ||
| Привет друзья. Довненько необщались. Как жизнь? При отправке почты через mail, выводится такая ошибка:
Что посоветуете делать? Как я знаю SMTP же таки-так работает в 25 ом порту?! |
| Автор: SneG0K 8.10.2008, 14:22 |
| Попробуй например на smtp.mail.ru Если никак то тогда давай больше кода... |
| Автор: DizelGenerator 8.10.2008, 15:13 |
| я так понимаю, это на локальном сервере проблема? А mail-сервер-то на локалхосте стоит? telnet localhost 25 что говорит? |
| Автор: Serebrus 8.10.2008, 16:12 |
| Раньше у меня было установлено пакет Denver а (apache2, php3, mysql4,...). Тогда у меня вообше не было проблем с mail. А сейчас я меня стоит пакет xampp (php5, mysql5,...). Вот теперь появилось эта проблема. Чесно говоря, я не так хорошо знаю почтовые серверы и все с этеми связанное. Так что при ответе, был бы рад если вы учтете это, и если можно по подробнее напишите. Заране спосибо. |
| Автор: SneG0K 8.10.2008, 16:17 |
| Ты сделал то, что тебя просили? Узнай про сервер на локалке. Попробуй прописать не локальный, а удаленный сервер. И если никак, то выложи хоть кусочек кода. |
| Автор: DizelGenerator 8.10.2008, 16:22 | ||
| К сожалению, xamp не использовал, скорее всего там есть такое же красивое решение с мейл-заглушкой, как в Денвере. Если нет, то как вариант, стянуть из Денвера файлики из папки "\usr\local\sendmail\", положить их куда надо, и в php.ini прописать путь к sendmail:
тогда она будет как в Денвере класть файлики с письмами в /tmp/!sendmail (путь прописан в файле sendmail_stub.pl). Но тогда придется еще и Perl настроить (поставить). Или еще есть вариант: http://www.glob.com.au/sendmail/. Но тут он реально пытается слать письма. |
| Автор: Serebrus 9.10.2008, 07:45 | ||
| DizelGenerator, я смотрел, путь (sendmail_path) таки-так указан правильно, только единственная разница: в окончании не было "-i". Я добавил, но ошибка не удалилась. Вот код отправки mail
|
| Автор: DizelGenerator 9.10.2008, 09:24 |
| Куда указывает sendmail_path, там утилитка-то sendmail.exe сама есть? Если стоит sendmail_path и указывает на утилитку, то проверьте, что в php.ini заккоментированы строки SMTP = localhost smtp_port = 25 Тут дело не в коде php, а в настройках. |
| Автор: Serebrus 9.10.2008, 12:27 |
| DizelGenerator, друг я согласен с тобой. sendmail.exe стоит как штык в указанном месте и строки SMTP = localhost smtp_port = 25 тоже НЕ закомментированы |
| Автор: DizelGenerator 9.10.2008, 13:09 | ||
Дак вот заккоментируйте их! Потому что когда они установлены, пхп пытается слать письма сразу соединяясь с SMTP-сервером (хорошо для виндов, где нет sendmail). А вот когда стоит только sendmail_path, то пхп отправляет письма через sendmail (хорошо для UNIX, где это в порядке вещей). |
| Автор: Serebrus 9.10.2008, 13:57 |
| DizelGenerator, не знаю даже что сказать, я сделал как вы сказали, но почти без результатов, т.е. результат та же ошибка: 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 D:\www\xampp\htdocs\Archive\admin\order.php on line 49 |
| Автор: DizelGenerator 9.10.2008, 14:17 |
| Значит или вы апач не перезапустили после изменения в php.ini, или php.ini правите один, а подключается другой. Попробуйте через phpinfo(); посмотреть, тот ли файл использует пхп (директива Loaded Configuration File) Других причин не вижу. |
| Автор: Serebrus 9.10.2008, 14:48 |
| DizelGenerator, УРА, слава Богу, ошибки НЕТ. Вы были правы, я исправлял не тот php.ini файл, т.е. не рабочий. При отправке вышло cmd окно, так как sendmail.exe не windows приложение. Появился мальенкий "НО", я не нашол отправленные e-mail (как я знаю, они же должны по умолчанию отправлятся в папку tmp, но там их нет. tmp папка создается при устанавливании пакета xampp) |
| Автор: DizelGenerator 9.10.2008, 15:02 |
| а что это оно не windows приложение? может быть винда 64 бит? Заглушка из Денвера вообще никакую консоль не вызывает, она просто запускает интерпретатор перла на запуск sendmail_stub.pl . А путь, куда письма кладутся, как раз в перловском файле прописан. Конечно же, перл должен где-то стоять + в перловском файле должен быть верно прописан путь к интерпретатору (чай, не юникс) Добавлено через 6 минут и 22 секунды хотя ошибаюсь: в Денверовском ехешнике sendmail жестко прописан путь к перлу: ..\..\bin\perl |
| Автор: Serebrus 9.10.2008, 16:03 |
| Ну чтоже теперь делать, DizelGenerator, как вы шитаете, ракая "реакция" нормальна, т.е. можно ли сказать что все работает? Просто я уже запарился |
| Автор: DizelGenerator 9.10.2008, 16:26 |
| нет, нездоровая ситуация. Вам же надо контролировать что там за письма отправляются. напишите подробнее о возникающей ошибке. Попробовал на 64 бит винде - работает. Может быть вы не тот ехешник скопировали из Денвера - их там много sendmail.exe, но нужен реально один - тот, который в папке usr\local\sendmail\ |
| Автор: Serebrus 9.10.2008, 16:33 |
| DizelGenerator, вы же сказали что путь отправки писем указан в перловском файле, это вы имели ввиду в Денвере или это не зависит от пакетов (хоть Денвер, хоть xampp)? И если путь указывается в перловском файле, то где его найти чтоб "переуказать" путь отправки (я не нашел его в папке perl). |
| Автор: DizelGenerator 9.10.2008, 16:46 |
| внимательнее: я уточнил, что в ваш пакет xampp требуется скопировать 2 файла из папки Денвера usr\local\sendmail\ . Это файл sendmail.exe и sendmail_stub.pl. Как все происходит: 1. пхп при выполнении функции mail ищет настройки в своем php.ini 2. Так как у вас там путь к sendmail, то он запускает утилику sendmail.exe, которую вы скопировали из Денвера 3. Денверовская утилитка sendmail пытается запустить перловский скрипт sendmail_stub.pl с помощью интерпретатора Perl, путь к которому жестко прописан в самом ехешнике (../../bin/Perl.exe). Соответственно, интерпретатор перла должен находится в папке ../../bin/, считая от каталога, где находится sendmail.exe Если у вас перла нет, то скопируйте еще и папку usr/bin/ из Денвера и разместите ее так, чтоб sendmail.exe ее нашла. Добавлено через 59 секунд Да, путь, куда сваливаются письма, прописан в файле sendmail_stub.pl, в самом его начале. Он тоже относительный и считается от папки, где находится сам файл скрипта. |
| Автор: Serebrus 10.10.2008, 07:57 |
| DizelGenerator, я скопировал файл sendmail_stub.pl в папку sendmail, но нечего не изменилось, все еще выходит cmd окно и отправленных писем в папке tmp (как указано в файле sendmail_stub.pl) нет. Я сделал так: -установил пакет Denver полностью; -скопировал свой проъект в папку home (со всеми настройками, т.е. с вспомогательными папками, ну прочем это не важно) -НЕ изменил настройки по умолчанию php.ini, perl, ... -проверил ВСЕ ОТЛИЧНО DizelGenerator но вапрос остается без ответа: почему после всех исправлений указанными вами проъект несработал в xampp? |
| Автор: DizelGenerator 10.10.2008, 08:58 |
| что пишется в окне? конкретно? |
| Автор: Serebrus 10.10.2008, 09:20 |
| В окне ничего не пишется, cmd окно тоже не появляется. Или же мне следует сравнить все ключевые файлы (php.ini, perl, ...) Денвера и xampp? Как вы шитаете? |
| Автор: DizelGenerator 10.10.2008, 09:49 | ||||
Я вас окончательно не пойму уже... что стоит сверить - настройку php.ini в секции mail, размещение папок с sendmail и perl. Я вот все-таки не верю, что в xampp эта пробелма не решается штатными путями.. Есть же там какойто MercuryMail... |
| Автор: Serebrus 10.10.2008, 12:30 |
| DizelGenerator, вам спасибо за помощ. Я решил временно работать в Денвере. |
| Автор: DizelGenerator 10.10.2008, 13:43 |
| Да собственно не за что ... Можно конечно сконфигурировать php чтобы он использовал сторонний smtp-сервер (типа mail.ru), но тогда накладываюся ограничения (письма слать можно только себе, да и многие почтовые сервера требуют реального существования адреса отправителя) |