Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: PHP5: отправка и получение писем на локальном компьютере...
 
 автор: Cyrax   (01.12.2007 в 14:01)   письмо автору
 
 

Имеется много сабжевых тем, только почему-то отвечать в тех темах нельзя. Посему новая ветка:
Проблема следующая. Работаю с Apache на локальном компьютере. Поставил sendmail (indigomail 3.10 trial). В php.ini прописал путь к нему. Скрипт, отправляющий письмо, выполняется на ура, т.е. mail() возвращает 1. Выполнял скрипт и при подключенном инете. Письма адресатам не доходят. Вопросы следующие:
1. Как посмотреть ошибки, которые возникают при работе sendmail'а ? В одной из документаций говорится о каталоге var\log\mail - его я нигде не нашёл. В каталоге установки sendmail'а имеется единственный лог: sendmail.log. Но туда ничего не записывается при отправке писем.
2. Верно ли я проинициализировал переменные sandmail'а:
[OPTIONS]
;Mail servers host name
MAILSERVER=localhost
;Default value for senders email address
FROM=cyrax@newmail.ru
;Default value for reply-to address
REPLYTO=cyrax@newmail.ru
;Registration key
REGKEY=none
;Authenticate to SMTP sever (yes=y)
AUTHENTICATE=n
;User name for authentication
USERNAME=
;password for authentication
PASSWORD=

3. Верно ли я указал параметры в php.ini:
[mail function]
; For Win32 only.
;SMTP = localhost
sendmail_path = "C:\Program Files\Sendmail"
smtp_port = 25

4. Что из себя представляет заглушка для писем, которую ставит Denver. Можно ли сделать такую же без denver'а ? Т.е. мне нужно перехватить отправляемые письма и посмотреть, как они будут выглядеть глазами адресата (локально).

   
 
 автор: sim5   (01.12.2007 в 14:14)   письмо автору
 
   для: Cyrax   (01.12.2007 в 14:01)
 

3.
[mail function]
; For Win32 only.
;SMTP = localhost
;smtp_port = 25

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = \usr\sbin\sendmail -t -i

Если речь о денвере.

4. Заглушка как раз и "ложит" в папку tmp\!sendmail Денвера ваши "отправленные" письма.

   
 
 автор: RV   (01.12.2007 в 14:15)   письмо автору
 
   для: Cyrax   (01.12.2007 в 14:01)
 

Sendmail for Windows V2.02 at Sat Mar 17 16:07:51 2007

[OPTIONS]
AUTHENTICATE=y
USERNAME=xxx
PASSWORD=xxx
;Mail servers host name
MAILSERVER=smtp.xxx.ru
;Default value for senders email address
FROM=xxx
;Mail servers IP port
PORT=25
;Timeout interval value when sending mail in seconds
TIMEOUT=500
;Registration key
REGKEY=xxx
;Default value for reply-to address
REPLYTO=xxx

[mail function]
SMTP = C:\sendmail\sendmail.exe -t
smtp_port = 25
sendmail_from = тоже самое что было выше
sendmail_path = C:\sendmail\sendmail.exe -t

в пхп коде отправляю с хедером
$headers = "From: " . $from . "\n";
$from - одно и тоже везде. и в пхп.ини и в конфиге сендмайла (REPLYTO, FROM)

все доходит на ура

>Выполнял скрипт и при подключенном инете

а при отключенном тоже не доходит? а как оно дойдет?

   
 
 автор: Cyrax   (01.12.2007 в 17:32)   письмо автору
 
   для: RV   (01.12.2007 в 14:15)
 

Работаю без всяких денверов. Стоит Apache, PHP, MySQL. Всё настроено, всё работает. На сервер провайдера ничего не закачивал. Работаю на своём компе.
Поставил sendmail. В его конфиге параметров PORT, TIMEOUT нет.

1. Что нужно указать в параметре MAILSERVER, ? В http://far.h1.ru/serv/apache/winnt4.html рекомендуют указать localhost, RV рекомендует какой-то конкретный SMTP-сервер указать. Ничего не понятно...

2. В php.ini нужно указывать и sendmail_path, и SMTP ? В книге "PHP 5" Котерова и Костарёва пишут, что эти параметры взаимоисключающие...

3. sendmail.exe в момент выполнения php-метода mail() должен висеть в памяти, как, скажем, Apache? В http://far.h1.ru/serv/apache/winnt4.html пишут, что sendmail в момент запуска скрипта должен быть запущен. Т.е. он должен висеть в памяти ? Тогда как его загрузить в память ?

4. В результате "опытов" с sendmail.exe прихожу к выводу, что mail() выполняет строку, указанную в переменной sendmail_path файла php.ini + передаёт ему параметры. Причём если эта переменная задана (не важно - правильно, неправильно), то mail() возвращает true, не задана - возвращает false.
Задал эту переменную: sendmail_path = "C:\GPL\Sendmail\sendmail.exe -t". Выполняю скрипт - sendmail пишет в логах:

Sending mail from Cyrax@newmail.ru to cyrax@newmail.ru,cyrax-temp@mail.ru
Subject: =?windows-1251?B?xO7h8PvpIOTl7fwh?=
Error: connect failed
Message delivery failed

И не понятно, что за коннект failed - коннект с нетом или коннект с SMTP-сервером (инет есть)...

   
 
 автор: Cyrax   (01.12.2007 в 20:52)   письмо автору
 
   для: RV   (01.12.2007 в 14:15)
 

Параметры у меня сейчас такие:

[OPTIONS]
;Mail servers host name
MAILSERVER=localhost
;Default value for senders email address
FROM=cyrax@newmail.ru
;Default value for reply-to address
REPLYTO=cyrax@newmail.ru
;Registration key
REGKEY=Cyrax:ENT:20071101,cyrax-station,31047
;Authenticate to SMTP sever (yes=y)
AUTHENTICATE=n
;User name for authentication
USERNAME=
;password for authentication
PASSWORD=


[mail function]
; For Win32 only.
;SMTP = localhost
SMTP = "C:\GPL\Sendmail\sendmail.exe -t"        
smtp_port = 25

; For Win32 only.
sendmail_from = cyrax@newmail.ru

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = "C:\GPL\Sendmail\sendmail.exe -t"

   
 
 автор: RV   (02.12.2007 в 03:48)   письмо автору
 
   для: Cyrax   (01.12.2007 в 20:52)
 

у меня почта на обычном мейле (пусть будет меил.ру)
сервер на локалхосте (апач + пхп)
вот я с помощью этой почты и отправляю письма. этот сендмеил это и делает.
MAILSERVER это смтп сервер моей почты (с батом работали? тоже самое, раздел отправка писем).
если вы работаете через почту cyrax@newmail.ru
то и меилсервер должны указывать ньюмейла (а не локалхост), имя, пароль для этого ящика, AUTHENTICATE=n скорее всего y

>Error: connect failed
у вас в MAILSERVER указано локалхост. чего бы он подключился?
книг Котерова к сожалению не читал. не могу знать кто и что исключает.

создайте батник в папке с сендмеилом и выполните
sendmail -messagefile=1.txt -subject="This is the subject" cyrax@newmail.ru
pause

скорее всего унас разные версии сендмейла

   
 
 автор: sim5   (02.12.2007 в 05:40)   письмо автору
 
   для: RV   (02.12.2007 в 03:48)
 

А я использую заглушку - проверить быстро результат на локалке можно, а реальную отправку проверяю через Personal SMTP Server.

   
 
 автор: Cyrax   (02.12.2007 в 09:38)   письмо автору
 
   для: sim5   (02.12.2007 в 05:40)
 

>А я использую заглушку - проверить быстро результат на локалке можно
Что за заглушка ? Мне нужно реализовать заглушку без использования денвера...

> а реальную отправку проверяю через Personal SMTP Server.
Так ведь для проверки отправки можно и sendmail'ом обойтись, указав какой-нибудь существующий smtp-сервер, где ты зарегистрирован...

   
 
 автор: sim5   (02.12.2007 в 10:11)   письмо автору
 
   для: Cyrax   (02.12.2007 в 09:38)
 

В Денвере sendmail и работает как заглушка, никуда ничего не отправляя, а ложит письма в паку tmp\!sendmail.

   
 
 автор: Cyrax   (02.12.2007 в 11:51)   письмо автору
 
   для: sim5   (02.12.2007 в 10:11)
 

Тогда как мне мой sendmail сделать заглушкой ?

   
 
 автор: sim5   (02.12.2007 в 12:01)   письмо автору
 
   для: Cyrax   (02.12.2007 в 11:51)
 

Сделать так как в Денвере видимо.

   
 
 автор: Cyrax   (02.12.2007 в 12:09)   письмо автору
 
   для: sim5   (02.12.2007 в 12:01)
 

>Сделать так как в Денвере видимо.
А это поможет ?

   
 
 автор: sim5   (02.12.2007 в 12:22)   письмо автору
 
   для: Cyrax   (02.12.2007 в 12:09)
 

:)) Думаю да, у меня ведь сендмейл не шлет письма во "внешний мир" из под Денвера.

   
 
 автор: Cyrax   (02.12.2007 в 13:10)   письмо автору
 
   для: sim5   (02.12.2007 в 12:22)
 

lol:

А теперь серьёзно...
(вопрос, думаю, известен)

   
 
 автор: sim5   (02.12.2007 в 13:26)   письмо автору
 
   для: Cyrax   (02.12.2007 в 13:10)
 

Могу и серьезно. Ну если на Денвере работает, то почему это не должно работать у вас? Я стал использовать отдельный SMTP сервер после глюков с почтой на mail.ru (нужна была проверка реальной отправки), а заглушка как работала так и работает. Возьмите Денвер и гляньте как все в нем сделано.

   
 
 автор: Cyrax   (02.12.2007 в 15:33)   письмо автору
 
   для: sim5   (02.12.2007 в 13:26)
 

>Возьмите Денвер и гляньте как все в нем сделано.
Что значит глянуть ? Денвер я ставить не собираюсь, т.к. после него работоспособность системы "Apache + PHP + MySQL" не восстановишь...

   
 
 автор: sim5   (02.12.2007 в 15:42)   письмо автору
 
   для: Cyrax   (02.12.2007 в 15:33)
 

Кто вам такое сказал? Денвер вообще ничего в систему не забрасывает, и нигде в реестре не прописывается. Можете его спокойно установить, не указывая запускать виртуальный диск при входе в ситему (а укажите, ничего страшного, из Автозапуска ярлык выбросите и все). Если вы не будете стартовать ярлыком Денвер, то он в системе будет просто "Отсутствовать" - смотрите на здоровье.

   
 
 автор: Cyrax   (02.12.2007 в 17:53)   письмо автору
 
   для: sim5   (02.12.2007 в 15:42)
 

> Денвер вообще ничего в систему не забрасывает
А php.ini он куда девает ? Как запускает Apache, минуя реестр ?
Кроме того, MySQL поставит старую версию + в реестр пропишет... Как потом разгребать всё это ?

   
 
 автор: sim5   (02.12.2007 в 17:57)   письмо автору
 
   для: Cyrax   (02.12.2007 в 17:53)
 

Никуда не девает, оно спокойно лежит в паке, которую выберете в качестве установке Денвера, \usr\local\php5. Я же вам сказал - ничего не пишется в реестр, не нужен реестр ни Apache, ни MySQL, ни PHP. Удалите потом Денвер вот и все, ничего разгребать не придется.

   
 
 автор: Cyrax   (02.12.2007 в 18:03)   письмо автору
 
   для: sim5   (02.12.2007 в 17:57)
 

Как по мне, php.ini должен лежать в папке windows...
А при установке MySQL и Apache в реестр они у меня прописываются...
При этом в составе денвера будёт одно старьё...
И как происходит работа со службами, минуя реестр ?

   
 
 автор: sim5   (02.12.2007 в 18:09)   письмо автору
 
   для: Cyrax   (02.12.2007 в 18:03)
 

Во-первых Денвер, это не старье, РНР5, пожалуйста, MySQL нужной вам версии, пожалуйста, нужны расширения, пожалуйста... А во-вторых, вас что интересует, почему так "не красиво" распоряжается Денвер с php.ini или вам нужно выяснить о заглушке? Вообще, для приложений расположение их INI-файлов в системном каталоге, условие не обязательное, да и записи в реестре, тоже самое.

   
 
 автор: Cyrax   (02.12.2007 в 18:14)   письмо автору
 
   для: sim5   (02.12.2007 в 18:09)
 

> или вам нужно выяснить о заглушке?
Уже теряю надежду...

   
 
 автор: sim5   (02.12.2007 в 18:48)   письмо автору
 
   для: Cyrax   (02.12.2007 в 18:14)
 

Волков бояться, не пить шампанского. )

   
 
 автор: Cyrax   (02.12.2007 в 21:04)   письмо автору
 
   для: sim5   (02.12.2007 в 18:48)
 

Уж как-нибудь постараюсь...
Будемсс ждать...

   
 
 автор: Faraon   (02.12.2007 в 21:53)   письмо автору
 
   для: sim5   (02.12.2007 в 15:42)
 

Денвер скорее всего тоже исползует порт 80, поэтому другая связка будет недоступна

   
 
 автор: sim5   (03.12.2007 в 05:12)   письмо автору
 
   для: Faraon   (02.12.2007 в 21:53)
 

Использует, но когда запущен.

   
 
 автор: Cyrax   (02.12.2007 в 17:55)   письмо автору
 
   для: sim5   (02.12.2007 в 10:11)
 

Как мне сделать заглушку ?

   
 
 автор: Cyrax   (02.12.2007 в 09:34)   письмо автору
 
   для: RV   (02.12.2007 в 03:48)
 

C smtp.mail.ru письма отправляются на ура - и на mail.ru, и на newmail.ru.
А вот с smtp.newmail.ru имеются проблемы аутентификации:

Error: Unexpected response: 535 authorization failed (#5.7.0)
Expected ^235 
Message delivery failed

Поставил:
AUTHENTICATE=y
USERNAME=...
PASSWORD=...
smtp-сервер, логин и пароль указываю верно - проверил.
На сайте newmail.ru пишут про smtp-сервер:

smtp.newmail.ru
Внимание! Для доступа к SMTP нужно включить аутентификацию.

Эта аутентификация, как я понимаю, и есть AUTHENTICATE=y с логином и паролем...

В чём может быть проблема ?

   
 
 автор: RV   (02.12.2007 в 11:44)   письмо автору
 
   для: Cyrax   (02.12.2007 в 09:34)
 

юзернейм неправильный

   
 
 автор: Cyrax   (02.12.2007 в 11:49)   письмо автору
 
   для: RV   (02.12.2007 в 11:44)
 


юзернейм неправильный

Cyrax- это правильный USERNAME. Пробовал и с маленькой буквы - та же ошибка.
По этому логину и паролю я нормально захожу на свою почту непосредственно через их сервер...

   
 
 автор: RV   (03.12.2007 в 05:48)   письмо автору
 
   для: Cyrax   (02.12.2007 в 11:49)
 

сменить почту, найти другую версию сендмейла

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования