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

Форум Apache

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

 

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

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

тема: Через денвер не отправляются письма.
 
 автор: Seb   (22.05.2006 в 10:36)   письмо автору
 
 

Заглушка sendmail отключена, а письма все равно не отправляются.
Подскажите что делать?

   
 
 автор: Artem S.   (22.05.2006 в 11:09)   письмо автору
 
   для: Seb   (22.05.2006 в 10:36)
 

В windows нету sendmail'a, и отправлять через денвер письма нельзя.

   
 
 автор: Seb   (22.05.2006 в 11:22)   письмо автору
 
   для: Artem S.   (22.05.2006 в 11:09)
 

Я меня раньше просто отдельно были настоены апач и php.
И все по windows работало. А с денвером, что совсем никак?

   
 
 автор: Seb   (22.05.2006 в 16:28)   письмо автору
 
   для: Artem S.   (22.05.2006 в 11:09)
 

>В windows нету sendmail'a, и отправлять через денвер письма
>нельзя.

Все-таки почту отправлять можно. Что удивительно, на нескольких форумах я встречал такой же ответ - в windows нет sendmail, поэтому почту из php отправлять нельзя (по крайней мере не через функцию mail()). На самом деле все оказалось просто. В php.ini нужно прописать:

[mail function]
SMTP = mysmtp.com
sendmail_from = denwer@mysite.com

В SMTP нужно прописать реальный SMTP-сервер (это я сделал и раньше, но не работало), а в sendmail_from нужно прописать КОРРЕКТНЫЙ e-mail - у меня не работало из-за того, что там было написано denwer@localhost. Видимо функция mail() проверяет корректность этого адреса, и если формат неправильный, то письмо не отсылает, хотя и возвращает true.

   
 
 автор: glsv   (22.05.2006 в 17:57)
 
   для: Seb   (22.05.2006 в 16:28)
 

> Видимо функция mail() проверяет корректность этого адреса
Скорее такую проверку проводит SMTP-сервер (mysmtp.com).

   
 
 автор: Seb   (23.05.2006 в 17:15)   письмо автору
 
   для: glsv   (22.05.2006 в 17:57)
 

Дело в том, что в параметре sendmail_from указывается адрес "от кого" ПО-УМОЛЧАНИЮ, т.е. если мы будем отправлять через функцию mail() письмо и не укажем отправителя явно, то будет использован этот параметр. Я, когда отправлял, явно указывал значение для поля "от кого", поэтому в данном случае параметр sendmail_from из php.ini ВООБЩЕ НЕ НУЖЕН. Однако подлая функция mail() все равно проверяет формат этого параметра и если он неправильный, то письмо не отправляется, так еще к тому же результат возвращает true - как будто письмо отправлено!

   
 
 автор: Trianon   (23.05.2006 в 17:54)   письмо автору
 
   для: Seb   (23.05.2006 в 17:15)
 

From, проставленный в заголовке письма и from отправителя письма (иногда называемый еще envelope-from) - в общем случае разные from'ы. sendmail_from - это как раз второй. Т.е. не тот, что помещен в заголовок письма, а тот что в диалоге протокола SMTP фигурирует в инструкции MAIL FROM:. Почему Вы решили, что он ВООБЩЕ НЕ НУЖЕН?

   
 
 автор: seb   (24.05.2006 в 10:36)   письмо автору
 
   для: Trianon   (23.05.2006 в 17:54)
 

>Почему Вы решили, что он ВООБЩЕ НЕ НУЖЕН?
Судя по информации о функции mail() (например, http://www.phpbuilder.com/manual/en/ref.mail.php):

sendmail_from string

Which "From:" mail address should be used in mail sent from PHP under Windows. 

Т.е. в справке по mail() сказано, что поле sendmail_from предназначено для поля "From". Поэтому, если я задаю поле From явно, то ожидаю, что параметр sendmail_from вообще не нужен.
Посмотрев заголовки отправляемых писем, я убедился в обратном - параметр sendmail_from используется в поле "Return-Path", т.е. у меня заголовки выглядят так:

Return-Path: <php@localhost.com>
X-Spam-Checker-Version: SpamAssassin 3.1.0 (2005-09-13)  ...
...

Видимо, я был не прав, в том что обвинял функцию mail() в неправильном результате, письмо действительно отправлялось, но, так как в "Return-Path" был e-mail неправильного формата, то оно (наверное) игнорировалось SMTP-сервером.
Однако и функция mail() тоже не без греха. По логике, если поле From указано явно, то тот же адрес должен подставляться и в поле "Return-Path", а sendmail_from в этом случае действительно не нужен.
Описание этой ошибки можно посмотреть тут - http://bugs.php.net/bug.php?id=28976, она, видимо, уже исправлена и новые версии php действительно вообще не будет использовать sendmail_from, если From задан явно.

   
 
 автор: glsv   (23.05.2006 в 18:35)
 
   для: Seb   (23.05.2006 в 17:15)
 

Дело в том, что если бы это делала функция mail(), то тогда бы она не возвращала результат true.

   
 
 автор: himic   (24.05.2006 в 08:11)   письмо автору
 
   для: glsv   (23.05.2006 в 18:35)
 

Установите себе почтовый сервер и всё,
настроить в РНР.ИНИ на каком ИП висит почтовик

   
 
 автор: Seb   (24.05.2006 в 10:39)   письмо автору
 
   для: himic   (24.05.2006 в 08:11)
 

>Установите себе почтовый сервер и всё,
>настроить в РНР.ИНИ на каком ИП висит почтовик
Меня вполне устраивает почтовый сервер провайдера, к тому же установка собственного почтового сервера никак проблему не решает.

   
Rambler's Top100
вверх

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