За последние 24 часа нас посетили 25224 программиста и 2009 роботов. Сейчас ищут 948 программистов ...

Не работает функция mail.

Тема в разделе "PHP для новичков", создана пользователем tretstoun, 28 дек 2016.

  1. tretstoun

    tretstoun Новичок

    С нами с:
    3 окт 2016
    Сообщения:
    58
    Симпатии:
    3
    Здравствуйте,

    пытаюсь отправить письмо с помощью функции mail - ошибок никаких нет, но письма не приходят. Пытался отправить письмо на разные ящики (mail, yandex, gmail) - результат тот же самый. Программа sendmail настроена на smtp сервер smtp.mail.ru, порт 465. Пробовал настраивать на yandex-сервер. Настройки в php.ini вроде бы правильные:
    Поискал по форуму, но не нашёл ничего, что бы могло бы как-то исправить эту ошибку. Кто-нибудь сталкивался с подобным?
    Код (Text):
    1.  
    2. [mail function]
    3. ; For Win32 only.
    4. ; http://php.net/smtp
    5. SMTP = 465
    6. ; http://php.net/smtp-port
    7. smtp_port = 465
    8.  
    9. ; For Win32 only.
    10. ; http://php.net/sendmail-from
    11. ; sendmail_from =
    12.  
    13. ; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
    14. ; http://php.net/sendmail-path
    15. sendmail_path = "C:\Program Files\sendmail\sendmail.exe -t"
    Вот код моего скрипта:

    PHP:
    1. <?php
    2. $addr = $_POST['addr'];
    3. $theme = $_POST['theme'];
    4. $text = $_POST['text'];
    5. if (isset($addr) && isset($theme) && isset($text)
    6. && $addr != "" && $theme != "" && $text != "") {
    7. $headers = 'MIME-Version: 1.0' . "\r\n";
    8. $headers .= "Content-type: text/plain; charset=windows-1251" . "\r\n";
    9. $headers .= "From: <qwertyRoman7@mail.ru>" . "\r\n";
    10. $headers .= "Reply-To: <qwertyRoman7@mail.ru>" . "\r\n";
    11. $headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
    12. $addr = "Manager ". "&lt;" . $addr . "&gt;";
    13. if (mail($addr, $theme, $text, $headers)) {
    14. echo '<h3 id = "newMessage">Сообщение успешно отправлено.</h3>';
    15. }
    16. else {
    17. echo '<h3 id = "newMessage">Сообщение не отправлено.</h3>';
    18. }
    19. } else {
    20. echo '<p id = "newMessage">Данные введены неправильно.</p>';
    21. }
    22. ?>
    я поправил тебе код для читабельности. %username%, пользуйся ббкодами [ code ] и [ php ]. пожалуйста!
    — Модераторъ
     
    #1 tretstoun, 28 дек 2016
    Последнее редактирование модератором: 28 дек 2016
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это частая ошибка, надо в логи смотреть почтовые. можно отказаться от mail() и использовать phpmailer или типа того. тогда будет проще жить.
     
    denis01 нравится это.
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.120
    Симпатии:
    1.245
    Адрес:
    там-сям
    Откуда знаешь, что sendmail у тебя настроен, из консоли пробовал почту отправлять?
    Больше подробностей, пожалуйста: ОС, тип почтовика, маршрутизация и т.д.
    ( меня вот это настораживает: "C:\Program Files\sendmail\sendmail.exe" )

    Или так: "я настроил exim вот по этой инструкции [ ссылка ] проверял так-то"
    ну это врядли :)
     
    #3 artoodetoo, 28 дек 2016
    Последнее редактирование: 28 дек 2016
  4. machetero

    machetero Активный пользователь

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    Я с sendmail'ом горя хлебнул, когда пытался его настраивать, так и не настроил. Зато postfix когда поставил, то он у меня почти сразу работать начал.
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.120
    Симпатии:
    1.245
    Адрес:
    там-сям
    @tretstoun, Денвер?
    --- Добавлено ---
    До меня кажется дошло: для ТС изменить php.ini из состава Денвер означает "настроить программу sendmail". Ошибочка.

    Насколько я помню, Денвер содержит некую заглушку для отладки почтовых сообщений. Оно называется sendmail.exe, а реально это фейк, оно складывает письма в файлы.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    @machetero постфикс зато при случайном апдейте может перестать работать на старом конфиге и придется писать новый :D
     
  7. tretstoun

    tretstoun Новичок

    С нами с:
    3 окт 2016
    Сообщения:
    58
    Симпатии:
    3
    "это частая ошибка, надо в логи смотреть почтовые."

    У меня стоят такие настройки в файле sendmail.ini:

    PHP:
    1. error_logfile=error.log;
    2.  
    3. ; create debug log as debug.log (defaults to same directory as sendmail.exe)
    4. ; uncomment to enable debugging
    5.  
    6. debug_logfile=debug.log;
    Но никаких файлов не создаётся в папке sendmail - ни с ошибками, ни просто логов - ничего нет.

    --- Добавлено ---

    Откуда знаешь, что sendmail у тебя настроен, из консоли пробовал почту отправлять?
    Из консоли я пробовал соединиться с smtp сервером mail - соединение прошло успешно, но потом стали появляться ошибки, что требуется тип соединения ssl.

    Программа sendmail у меня настроена согласно инструкции, вот настройки, если они нужны:

    PHP:
    1. [sendmail]
    2.  
    3. ; you must change mail.mydomain.com to your smtp server,
    4. ; or to IIS's "pickup" directory. (generally C:\Inetpub\mailroot\Pickup)
    5. ; emails delivered via IIS's pickup directory cause sendmail to
    6. ; run quicker, but you won't get error messages back to the calling
    7. ; application.
    8.  
    9. smtp_server=smtp.mail.ru;
    10.  
    11. ; smtp port (normally 25)
    12.  
    13. smtp_port=465;
    14.  
    15. ; SMTPS (SSL) support
    16. ; auto = use SSL for port 465, otherwise try to use TLS
    17. ; ssl = alway use SSL
    18. ; tls = always use TLS
    19. ; none = never try to use SSL
    20.  
    21. smtp_ssl=ssl
    22.  
    23. ; the default domain for this server will be read from the registry
    24. ; this will be appended to email addresses when one isn't provided
    25. ; if you want to override the value in the registry, uncomment and modify
    26.  
    27. default_domain=mail.ru;
    28.  
    29. ; log smtp errors to error.log (defaults to same directory as sendmail.exe)
    30. ; uncomment to enable logging
    31.  
    32. error_logfile=error.log;
    33.  
    34. ; create debug log as debug.log (defaults to same directory as sendmail.exe)
    35. ; uncomment to enable debugging
    36.  
    37. debug_logfile=debug.log;
    38.  
    39. ; if your smtp server requires authentication, modify the following two lines
    40.  
    41. auth_username= qwertyRoman77@mail.ru;
    42. auth_password= qwerty712
    43.  
    44. ; if your smtp server uses pop3 before smtp authentication, modify the
    45. ; following three lines. do not enable unless it is required.
    46.  
    47. pop3_server= pop.mail.ru
    48. pop3_username= qwertyRoman77@mail.ru;
    49. pop3_password= qwerty712
    50.  
    51. ; force the sender to always be the following email address
    52. ; this will only affect the "MAIL FROM" command, it won't modify
    53. ; the "From: " header of the message content
    54.  
    55. force_sender= qwertyRoman77@mail.ru;
    56.  
    57. ; force the sender to always be the following email address
    58. ; this will only affect the "RCTP TO" command, it won't modify
    59. ; the "To: " header of the message content
    60.  
    61. force_recipient=
    62.  
    63. ; sendmail will use your hostname and your default_domain in the ehlo/helo
    64. ; smtp greeting. you can manually set the ehlo/helo name if required
    65.  
    66. hostname= mail.ru
    ОС - windows xp.

    --- Добавлено ---
    @tretstoun, Денвер?

    У меня apache из состава xampp.
     
    #7 tretstoun, 29 дек 2016
    Последнее редактирование модератором: 29 дек 2016
  8. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Может всё таки стоило добавить этот здоровенний кусок кода в спойлер?
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.120
    Симпатии:
    1.245
    Адрес:
    там-сям
    Ну вот тебе и направление. Пока что твой сендмайл НЕ настроен, нет шансов, что для пхп он сделает исключение.
    --- Добавлено ---
    @tretstoun, пожалуйста используй ббкоды code и quote при оформлении сообщения.
     
  10. tretstoun

    tretstoun Новичок

    С нами с:
    3 окт 2016
    Сообщения:
    58
    Симпатии:
    3
    "требуется тип соединения ssl."

    У меня же стоит в настройках, что "smtp_ssl=ssl" ...

    "пожалуйста используй ббкоды code и quote при оформлении сообщения." - ок, я обычно их печатаю, забыл, наверное.
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    denis01 нравится это.
  12. tretstoun

    tretstoun Новичок

    С нами с:
    3 окт 2016
    Сообщения:
    58
    Симпатии:
    3
    Спасибо, подключил, всё работает вроде. :)
     
    denis01 нравится это.
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768