1

Тема: Подскажите почему не работает mail()

Народ, подскажите плиз. Заказал себе сверер. Вроде все установили туда и еще panel PLESK 9. Та в свою очередь поддерживает PHP. Но почему то функция mail() не пашет на сайте. От сюда несколько вопросов плиз:
Как узнать установлен у меня на сервере PHP?
(в какую папку может глянуть или какой то способ подскажете – сори за глупый вопрос smile)

Просто вроде установлен, но не пашет – и уже не знаю, что и думать.

Может как то специально нужно дополнительно установить для plesk панели - PHP или PHP-Myadmin? (для C-PANEL тоже вроде отдельно нужно устанавливать).

2

Re: Подскажите почему не работает mail()

В phpinfo можно посмотреть некоторые настройки.

Создать и запустить phpinfo.php файл со следующей строкой.

<?php phpinfo(); ?>

Path to sendmail - должно быть что-то вроде /usr/sbin/sendmail -t -i

Проверьте, чтобы в директиве disable_functions не было функции mail().

Попробуйте создать и запустить следующий файл, отредактировав адреса.

<?php
error_reporting(E_ALL); // Вывод ошибок.

$to  = 'user@example.com';

$subject = 'Тема письма';

$message = 'Текст письма';

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=windows-1251' . "\r\n";
$headers .= 'To: user <user@example.com>' . "\r\n";
$headers .= 'From: server <server@example.com>' . "\r\n";

mail($to, $subject, $message, $headers);
?>

Если выйдет ошибка, то будет за что ухватиться.

3

Re: Подскажите почему не работает mail()

Hanut сказал:

В phpinfo можно посмотреть некоторые настройки.

Если выйдет ошибка, то будет за что ухватиться.

Спасибо больше за помощь!

http://vseangari.ru/phpinfo.php можно увидеть здесь, он работает (ура так сказать, все же PHP установлен!)

но второй файл не пашет, в смысле что почта не уходит sad

подскажите, может что в настройках!

4

Re: Подскажите почему не работает mail()

CMan
Посмотрите установлен ли в системе sendmail, бинарник должен быть здесь: /usr/sbin/sendmail
Посмотрите логи Apache, там должны быть ошибки по поводу функции mail().

5 (изменено: CMan, 2009-12-12 12:23:17)

Re: Подскажите почему не работает mail()

Hanut сказал:

Посмотрите установлен ли в системе sendmail, бинарник должен быть здесь: /usr/sbin/sendmail

Какая то папка sendmail там есть (в /usr/sbin/) , но почему то в нее не пускает черех CuteFTP (но видно это ярлык)

Т.к. через WinSCP этот сэндмэйл выглядит как ярлык на /etc/alternatives/mta

mta там тоже как ярлык в /var/qmail/bin/sendmail - и вот тут уже sendmail как файлик 14120 размером.

тока не могу понять зачем такие сложности? разве просто не скопировать туда sendmail (/usr/sbin/sendmail)
что я собственно и сделал, но работать он от этого все равно не стал smile

Hanut сказал:

Посмотрите логи Apache, там должны быть ошибки по поводу функции mail().

А подскажите плиз, где логи смотреть по апач. Стока однообразных папок sad

6

Re: Подскажите почему не работает mail()

CMan
Логи Apache поищите ниже каталога сайта, обычно папка logs или statistics. Если /usr/sbin/sendmail существует - значит sendmail установлен.

Для вывода ошибок используйте строку error_reporting(E_ALL); в коде отправки почты. Выше поправил пример.

7 (изменено: CMan, 2009-12-13 14:56:02)

Re: Подскажите почему не работает mail()

Hanut сказал:

CMan
Логи Apache поищите ниже каталога сайта, обычно папка logs или statistics. Если /usr/sbin/sendmail существует - значит sendmail установлен.

Для вывода ошибок используйте строку error_reporting(E_ALL); в коде отправки почты. Выше поправил пример.

Вообще как выяснолось - все работало! smile

Просто в вашем примере была ошибка синтаксиса какая то, подправьте wink

НО суть проблемы оказалась в том что почему то только в корневой папке работает PHP. Когда скопировал нужный мне скрипт с функцией mail() в корень, все заработало. А в родной (созданной по умолчанию plesk-ом) не работает. Причем при ссылке на этот файл вообще предлогает его скачать (!!!)
От сюда конечно два вопроса, если это конечно не будет большой наглостью smile

1. почему данная папка для сриптов (cgi-bin) так странно себя ведет, точнее скрипты в ней. Причем какие только атрибуты не ставил - все равно при обращение в строке браузера к PHP файлу, он его дает скачать!!!
2. И еще вопрос, почему то в еррорах лезет такая ошибка, парой даже по 7-8 строчек за одно обращение там в лог прописываются с этой одно и той же ошибкой. Вот сама ошибка:

[Sun Dec 13 14:43:33 2009] [notice] cannot use a full URL in a 401 ErrorDocument directive --- ignoring!
[Sun Dec 13 14:43:33 2009] [notice] cannot use a full URL in a 401 ErrorDocument directive --- ignoring!
[Sun Dec 13 14:43:33 2009] [notice] cannot use a full URL in a 401 ErrorDocument directive --- ignoring!
[Sun Dec 13 14:43:55 2009] [notice] cannot use a full URL in a 401 ErrorDocument directive --- ignoring!

- что это может значить?

но не смотря на то что ошибка лезет, php в корне работает.

ОЧЕНЬ буду признателен за ответ!!

8

Re: Подскажите почему не работает mail()

CMan
Извиняюсь, пропустил точку с запятой в примере. Поправил.

В каталоге cgi-bin обычно запускаются перловые скрипты, а .php там делать нечего, поэтому они и не обрабатываются.

401 - это не авторизованный доступ. В данном случае директива ErrorDocument для 401 ошибки указывает на какой-то файл с полным урлом вместо относительного.

9

Re: Подскажите почему не работает mail()

Подскажите пожалуйста. Я первый раз пытаюсь настроить sendmail.
Вообщем если я правильно понял настройки которые в sendmail.ini это для почты с которой будет отправляться письма, а адресс почты который указан в mail(); это куда будет производиться отправка. Если да, все делаю по примеру, почта у меня на гугле:
smtp_server=smtp.gmail.com
smtp_port=465
auth_username=name@gmail.com
auth_password=pass
force_sender=name@gmail.com
hostname=gmail.com

log из debug.log:

11.01.10 21:33:22 ** --- MESSAGE END ---
11.01.10 21:33:22 ** Connecting to smtp.gmail.com:465
11.01.10 21:33:23 ** Disconnected.
11.01.10 21:33:23 ** Disconnected.
11.01.10 21:33:23 ** Disconnected.
11.01.10 21:33:23 ** Error connecting with SSL.

log из error.log:

11.01.10 21:33:23 : Error connecting with SSL.

Настройки и сам sendmail брал здесь: http://webi.ru/webi_files/sendmail_ssl.html
У меня WindowsXP, XAMPP

10 (изменено: DmitryV, 2011-01-11 00:06:13)

Re: Подскажите почему не работает mail()

smtp_server=smtp.gmail.com
smtp_port=465


попробуйте другой сервер использующий 21 порт, возможно ваш сервер не поддерживает SSL соединение в конфигурации.

У меня WindowsXP


Если у Вас XP то лучше развернуть почтовым сервером hMailServer
http://www.hmailserver.com/

sendmail если ВЫ с ним не знакомы достаточно думаю будет сложным для вас в плане настройки конфигурационного файла. может Вам поможет эта статья http://openbsdru.oganer.net/docs/howto-sendmail.html и много полезного по sendmail можно прочесть на http://www.opennet.ru/

11

Re: Подскажите почему не работает mail()

_KurT_ сказал:

Error connecting with SSL

Посмотрите в настройках GMail, возможно там отключен доступ извне.

Попробуйте другой почтовый сервер. Если он заработает - значит проблема в настройках GMail.

12 (изменено: _KurT_, 2011-01-11 00:53:49)

Re: Подскажите почему не работает mail()

2 DmitryV:
насколько я знаю gmail только с SSL и рботает. Спасибо за информацию конечно, но я уже потратил достаточно времени для того чо бы разобраться с настройками в sendmail, вот по этой статье:
http://www.simplecoding.org/php-mail-pod-windows.html 
(не так и сложно настроить, как в примере описано, но что б работало .... )

И если сейчас пытаться развернуть hMailServerеще то для меня будет уже слишком smile. Пробывал подставлять аккаунты от gmail.com, mail.ru, yandex.ua ничего не помогает.

2 Hanut:
другие сервера тоже не получается ....
Пытался только что найти где же в настройках Gmail включается\отключается доступ из вне, не подскаже где конкретно ???

13

Re: Подскажите почему не работает mail()

_KurT_ сказал:

другие сервера тоже не получается

Это плохо. Значит что-то с настройками или самим sendmail не то. Ошибки не меняются? Даже если не по SSL соединяться?

Настройки GMail описаны здесь:
http://mail.google.com/support/bin/answ … swer=13287

14 (изменено: _KurT_, 2011-01-11 03:13:11)

Re: Подскажите почему не работает mail()

а как по SSL соединяться ? это где-то конкретно указывать надо ? если можно расскажите.
Так как я думал что SSL автоматичеки используеться при выборе нужного порта.

Может по логи что-то вам скажут, так как мне они ничего не говорят. Вот 3 лога, для разных портов, два из них указаных в настройках на сайте gmail.com(465,587), а третий (995) у меня стоит в встроенном клиенте в Opera (кстати с ним оперовский клиент нормально работает):

11.01.11 01:47:23 ** --- MESSAGE BEGIN ---
11.01.11 01:47:23 ** To: name@rambler.ru
11.01.11 01:47:23 ** Subject: rambler-mayler
11.01.11 01:47:23 ** From:name@gmail.com
11.01.11 01:47:23 **
11.01.11 01:47:23 ** rambler-mayler
11.01.11 01:47:23 ** --- MESSAGE END ---
11.01.11 01:47:23 ** Authenticating with POP3 server
11.01.11 01:47:23 ** Connected.
11.01.11 01:47:23 << +OK Gpop ready for requests from 109.86.199.114 c9pf13989961fat.36<EOL>
11.01.11 01:47:23 >> CAPA<EOL>
11.01.11 01:47:23 << +OK Capability list follows<EOL>USER<EOL>RESP-CODES<EOL>EXPIRE 0<EOL>LOGIN-DELAY 300<EOL>X-GOOGLE-VERHOEVEN<EOL>UIDL<EOL>STLS<EOL>.<EOL>
11.01.11 01:47:23 >> USER name@gmail.com<EOL>
11.01.11 01:47:23 << +OK send PASS<EOL>
11.01.11 01:47:23 >> PASS my_pass<EOL>
11.01.11 01:47:24 << +OK Welcome.<EOL>
11.01.11 01:47:24 >> QUIT<EOL>
11.01.11 01:47:24 << +OK Farewell.<EOL>
11.01.11 01:47:24 ** Disconnected.
11.01.11 01:47:24 ** Disconnected.
11.01.11 01:47:24 ** Disconnected.
11.01.11 01:47:24 ** Connecting to smtp.gmail.com:465
11.01.11 01:47:24 ** Disconnected.
11.01.11 01:47:24 ** Disconnected.
11.01.11 01:47:24 ** Disconnected.
11.01.11 01:47:24 ** Error connecting with SSL.


11.01.11 01:47:51 ** --- MESSAGE BEGIN ---
11.01.11 01:47:51 ** To: name@mail.ru
11.01.11 01:47:51 ** Subject: mail-mayler
11.01.11 01:47:51 ** From:name@gmail.com
11.01.11 01:47:51 **
11.01.11 01:47:51 ** mail-mayler
11.01.11 01:47:51 ** --- MESSAGE END ---
11.01.11 01:47:51 ** Authenticating with POP3 server
11.01.11 01:47:51 ** Connected.
11.01.11 01:47:51 << +OK Gpop ready for requests from 109.86.199.114 i6pf13994909faa.7<EOL>
11.01.11 01:47:51 >> CAPA<EOL>
11.01.11 01:47:51 << +OK Capability list follows<EOL>USER<EOL>RESP-CODES<EOL>EXPIRE 0<EOL>LOGIN-DELAY 300<EOL>X-GOOGLE-VERHOEVEN<EOL>UIDL<EOL>STLS<EOL>.<EOL>
11.01.11 01:47:51 >> USER name@gmail.com<EOL>
11.01.11 01:47:51 << +OK send PASS<EOL>
11.01.11 01:47:51 >> PASS my_pass<EOL>
11.01.11 01:47:51 << +OK Welcome.<EOL>
11.01.11 01:47:51 >> QUIT<EOL>
11.01.11 01:47:51 << +OK Farewell.<EOL>
11.01.11 01:47:51 ** Disconnected.
11.01.11 01:47:51 ** Disconnected.
11.01.11 01:47:51 ** Disconnected.
11.01.11 01:47:52 ** Connecting to smtp.gmail.com:587
11.01.11 01:47:52 ** Connected.
11.01.11 01:47:52 << 220 mx.google.com ESMTP f24sm7188500fak.24<EOL>
11.01.11 01:47:52 >> EHLO gmail.com<EOL>
11.01.11 01:47:52 << 250-mx.google.com at your service, [109.86.199.114]<EOL>250-SIZE 35651584<EOL>250-8BITMIME<EOL>250-AUTH LOGIN PLAIN XOAUTH<EOL>250-ENHANCEDSTATUSCODES<EOL>250 STARTTLS<EOL>
11.01.11 01:47:52 ** Authenticating as name@gmail.com
11.01.11 01:47:52 >> STARTTLS<EOL>
11.01.11 01:47:52 << 220 2.0.0 Ready to start TLS<EOL>
11.01.11 01:47:52 <<
11.01.11 01:47:52 ** Disconnected.
11.01.11 01:47:52 ** Disconnected.
11.01.11 01:47:52 ** Disconnected.
11.01.11 01:47:52 ** SSL is not available on this server.


11.01.11 02:03:28 ** --- MESSAGE BEGIN ---
11.01.11 02:03:28 ** To: name@rambler.ru
11.01.11 02:03:28 ** Subject: rambler-mailer
11.01.11 02:03:28 ** From:name@gmail.com
11.01.11 02:03:28 **
11.01.11 02:03:28 ** rambler-mailer
11.01.11 02:03:28 ** --- MESSAGE END ---
11.01.11 02:03:28 ** Authenticating with POP3 server
11.01.11 02:03:28 ** Connected.
11.01.11 02:03:28 << +OK Gpop ready for requests from 109.86.199.114 b10pf2048670fav.51<EOL>
11.01.11 02:03:28 >> CAPA<EOL>
11.01.11 02:03:28 << +OK Capability list follows<EOL>USER<EOL>RESP-CODES<EOL>EXPIRE 0<EOL>LOGIN-DELAY 300<EOL>X-GOOGLE-VERHOEVEN<EOL>UIDL<EOL>STLS<EOL>.<EOL>
11.01.11 02:03:28 >> USER name@gmail.com<EOL>
11.01.11 02:03:28 << +OK send PASS<EOL>
11.01.11 02:03:28 >> PASS my_pass<EOL>
11.01.11 02:03:28 << +OK Welcome.<EOL>
11.01.11 02:03:28 >> QUIT<EOL>
11.01.11 02:03:28 << +OK Farewell.<EOL>
11.01.11 02:03:28 ** Disconnected.
11.01.11 02:03:28 ** Disconnected.
11.01.11 02:03:28 ** Disconnected.
11.01.11 02:03:29 ** Connecting to smtp.gmail.com:995
11.01.11 02:03:29 ** Connected.
11.01.11 02:04:29 <<
11.01.11 02:04:29 ** Disconnected.
11.01.11 02:04:29 ** Disconnected.
11.01.11 02:04:29 ** Disconnected.
11.01.11 02:04:29 ** Connection Closed Gracefully.

15 (изменено: DmitryV, 2011-01-11 11:51:00)

Re: Подскажите почему не работает mail()

нет этот лог говарит что Error connecting with SSL - Ошибка соединения по SSL, я давно не настраивал sendmail а использовал postfix он удобнее, а под виндами лучше hMailServer.
sendmail и postfix это под никсы, под win лучше не извращаться.
Как серверную платформу предпочитаю FreeBSD или Solaris.

по настройкам sendmail поищите тут http://www.opennet.ru/ на сколько я помню я прикручивал SASL для SSL автризации почитайте может эта статья вам поможет http://www.opennet.ru/base/net/sendmail_sasl2.txt.html и там в поиске ещё много есть док и статей по sendmail.

И как вариант проверьте может у вас файервол что отсекает например ответы сервера.

16

Re: Подскажите почему не работает mail()

1. спаисбо за инфу, посмотрел, но явсе таки хочу натсроить под виндой, чисто из принципи, мне только для тестирования своих сайтов на локальной машине.

2. Я уже задавал вопросс, но что-бы использовать SSL, это надо гдето конкретно указывать в настройках sendmail ???

3. ну это я понимаю что "Ошибка соединения по SSL" )))
но при порте:
465 - Error connecting with SSL.
587 - SSL is not available on this server.
995 - Connection Closed Gracefully.

причём при прочих одинаковых настройках, как это обьяснить ?

17

Re: Подскажите почему не работает mail()

Под винду однозначно hMailServer или MDaemon и не извращаться sendmail это для юникс систем.

18

Re: Подскажите почему не работает mail()

Мне не нужен почтовый сервер у себя на машине, мне нужнен агент передачи почты (MTA — mail transfer agent)

19

Re: Подскажите почему не работает mail()

Доставка почты на GMail работает. Установил и проверил.

Sendmail взял отсюда http://www.glob.com.au/sendmail/
Все установил и настроил по статье http://www.simplecoding.org/php-mail-pod-windows.html

sendmail.ini

; configuration for fake sendmail

; if this file doesn't exist, sendmail.exe will look for the settings in
; the registry, under HKLM\Software\Sendmail

[sendmail]

; you must change mail.mydomain.com to your smtp server,
; or to IIS's "pickup" directory.  (generally C:\Inetpub\mailroot\Pickup)
; emails delivered via IIS's pickup directory cause sendmail to
; run quicker, but you won't get error messages back to the calling
; application.

smtp_server=smtp.gmail.com

; smtp port (normally 25)

smtp_port=587

; SMTPS (SSL) support
;   auto = use SSL for port 465, otherwise try to use TLS
;   ssl  = alway use SSL
;   tls  = always use TLS
;   none = never try to use SSL

smtp_ssl=auto

; the default domain for this server will be read from the registry
; this will be appended to email addresses when one isn't provided
; if you want to override the value in the registry, uncomment and modify

default_domain=gmail.com

; log smtp errors to error.log (defaults to same directory as sendmail.exe)
; uncomment to enable logging

error_logfile=error.log

; create debug log as debug.log (defaults to same directory as sendmail.exe)
; uncomment to enable debugging

debug_logfile=debug.log

; if your smtp server requires authentication, modify the following two lines

auth_username=*+*+*+*+@gmail.com
auth_password=pass

; if your smtp server uses pop3 before smtp authentication, modify the 
; following three lines.  do not enable unless it is required.

pop3_server=pop.gmail.com
pop3_username=*+*+*+*+@gmail.com
pop3_password=pass

; force the sender to always be the following email address
; this will only affect the "MAIL FROM" command, it won't modify 
; the "From: " header of the message content

force_sender=*+*+*+*@gmail.com

; force the sender to always be the following email address
; this will only affect the "RCTP TO" command, it won't modify 
; the "To: " header of the message content

force_recipient=

; sendmail will use your hostname and your default_domain in the ehlo/helo
; smtp greeting.  you can manually set the ehlo/helo name if required

hostname=gmail.com

php.ini

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

; For Win32 only.
sendmail_from = 

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

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

Тестовый скрипт.

<?php
// multiple recipients
$to  = '*+*+*@php-myadmin.ru';

// subject
$subject = 'Проверка работы функции mail';

// message
$message = '
<html>
<head>
  <title>Birthday Reminders for August</title>
</head>
<body>
  <p>Here are the birthdays upcoming in August!</p>
  <table>
    <tr>
      <th>Person</th><th>Day</th><th>Month</th><th>Year</th>
    </tr>
    <tr>
      <td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
    </tr>
    <tr>
      <td>Sally</td><td>17th</td><td>August</td><td>1973</td>
    </tr>
  </table>
</body>
</html>
';

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=windows-1251' . "\r\n";

// Mail it
echo mail($to, $subject, $message, $headers);

?> 

20

Re: Подскажите почему не работает mail()

Спасибо большое Hanut !!!  сразу заработало УРА ))

Посмотрел по настройкам вроде все одинаковое, значит скорее всего проблема была в самом sendmail.

21

Re: Подскажите почему не работает mail()

Зделал как написано но всеже письмо не отправилось на почту гугл

13.05.03 14:32:12 ** --- MESSAGE BEGIN ---
13.05.03 14:32:12 ** To: vitaliy.lutohin@gmail.com
13.05.03 14:32:12 ** Subject: Проверка работы функции mail
13.05.03 14:32:12 ** MIME-Version: 1.0
13.05.03 14:32:12 ** Content-type: text/html; charset=windows-1251
13.05.03 14:32:12 ** 
13.05.03 14:32:12 ** 
13.05.03 14:32:12 ** <html>
13.05.03 14:32:12 ** <head>
13.05.03 14:32:12 **   <title>Birthday Reminders for August</title>
13.05.03 14:32:12 ** </head>
13.05.03 14:32:12 ** <body>
13.05.03 14:32:12 **   <p>Here are the birthdays upcoming in August!</p>
13.05.03 14:32:12 **   <table>
13.05.03 14:32:12 **     <tr>
13.05.03 14:32:12 **       <th>Person</th><th>Day</th><th>Month</th><th>Year</th>
13.05.03 14:32:12 **     </tr>
13.05.03 14:32:12 **     <tr>
13.05.03 14:32:12 **       <td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
13.05.03 14:32:12 **     </tr>
13.05.03 14:32:12 **     <tr>
13.05.03 14:32:12 **       <td>Sally</td><td>17th</td><td>August</td><td>1973</td>
13.05.03 14:32:12 **     </tr>
13.05.03 14:32:12 **   </table>
13.05.03 14:32:12 ** </body>
13.05.03 14:32:12 ** </html>
13.05.03 14:32:12 ** 
13.05.03 14:32:12 ** --- MESSAGE END ---
13.05.03 14:32:12 ** Authenticating with POP3 server
13.05.03 14:32:22 ** Disconnected.
13.05.03 14:32:22 ** Disconnected.
13.05.03 14:32:22 ** Disconnected.
13.05.03 14:32:22 ** Connect timed out.

22

Re: Подскажите почему не работает mail()

BesTime сказал:

Connect timed out.

Скорее-всего соединение блокирует брандмауэр или антивирус установленный на компьютере. Попробуйте временно их отключить и проверить отправление письма.

23

Re: Подскажите почему не работает mail()

Hanut сказал:
BesTime сказал:

Connect timed out.

Скорее-всего соединение блокирует брандмауэр или антивирус установленный на компьютере. Попробуйте временно их отключить и проверить отправление письма.

Все отключил тотже эфект нече не изменилось

24

Re: Подскажите почему не работает mail()

все заработало, спасибо за инструкцию приведенную выше