За последние 24 часа нас посетили 59772 программиста и 1772 робота. Сейчас ищет 881 программист ...

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

Тема в разделе "Работа с почтой", создана пользователем alexphp, 5 дек 2019.

  1. alexphp

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

    С нами с:
    5 дек 2019
    Сообщения:
    98
    Симпатии:
    12
    У меня XAMPP 7.0.8 Linux.

    Давайте рассмотрим самую простую программу. Полагаю, что если удастся добиться её выполнения, то и более сложная программа на её основе выполнится тоже.
    Код (Text):
    1. <?php
    2. $addr = 'my_address_on_gmail@gmail.com';
    3. $message = "Ваше письмо";
    4.  
    5. $resMail = mail ($addr, 'Некоторая тема', $message);
    6.  
    7. if ($resMail !== TRUE)
    8. {
    9.   echo "Письмо не отправлено";
    10.   exit;
    11. }
    12. echo "Письмо отправлено";
    13. ?>
    К сожалению, эта программа, хоть и выдаёт результат "Письмо отправлено", но при входе в почту my_address_on_gmail@gmail.com никакого письма нет, даже в Спаме.

    На всякий случай показываю содержимое php.ini:
    Код (Text):
    1. [mail function]
    2. ; For Win32 only.
    3. ; http://php.net/smtp
    4. SMTP=localhost
    5. ; SMTP=smtp.gmail.com
    6. ; http://php.net/smtp-port
    7. smtp_port=25
    8. ; smtp_port=465
    9.  
    10. ; For Win32 only.
    11. ; http://php.net/sendmail-from
    12. ; sendmail_from = me@example.com
    13.  
    14. ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    15. ; http://php.net/sendmail-path
    16. sendmail_path=
    17.  
    18. ; Force the addition of the specified parameters to be passed as extra parameters
    19. ; to the sendmail binary. These parameters will always replace the value of
    20. ; the 5th parameter to mail(), even in safe mode.
    21. ;mail.force_extra_parameters =
    22.  
    23. ; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
    24. mail.add_x_header=On
    25.  
    26. ; Log all mail() calls including the full path of the script, line #, to address and headers
    27. ;mail.log =
    Попытка изменить SMTP на smtp.gmail.com и smtp_port на 465 с рестартом служб в XAMPP-менеджере не приводит ни к чему.

    Как сделать так, чтобы пользователь my_address_on_gmail@gmail.com получил отправленную почту?
    Спасибо за ответы!
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    Оченно много читать про почту и смежные технологии, сейчас просто так не отправить, все борются со спамом.
    Через SMTP, с помощью сторонних библиотек например PHPMailer, или Swift, смотреть настройки сервера итд итп. Причин сотни могут быть
     
    alexphp нравится это.
  3. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Вот тут есть инструкция, как правильно отправлять почту :)
     
    alexphp нравится это.
  4. Roman __construct

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

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Если не проходят письма - попробуйте более базовый уровень:

    Код (Text):
    1. echo "Test text" | mail -s "Test title" my_address_on_gmail@gmail.com
    это прям в командную строку Linux надо ввести
     
    alexphp нравится это.
  5. alexphp

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

    С нами с:
    5 дек 2019
    Сообщения:
    98
    Симпатии:
    12
    Почта не пришла. Выдал вот такое:
    mail: cannot send message: Процесс завершился с ненулевым статусом
     
  6. Roman __construct

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

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    надо разбираться значит с почтовым сервером в системе.

    либо, как вариант, слать письма через внешний SMTP (для новичка это будет проще, чем разбираться с настройкой DKIM и прочих прелестей почтовой жизни).

    в общем, почта - это в 90% случаев гемор тот еще :D
     
    alexphp нравится это.
  7. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    потому что это не Windows? :) там же выше написано "Windows only"
    --- Добавлено ---
    я бы посоветовал вернуть php.ini в девственное состояние и использовать проверенную библиотеку работы с почтой и в её конфигурации прописать данные внешнего smtp.
    https://swiftmailer.symfony.com/
    https://github.com/PHPMailer/PHPMailer

    или

    опять же имея данные для внешнего SMTP: gmail/mailru/yandex и т.п., и настроить в системе транспорт EXIM
    пример: https://tau-design.net/настройка-почты-яндекс-в-exim4/ , https://myitstuff.ru/16-setting-up-exim-on-debian-mail-from-gmail
     
    #7 artoodetoo, 9 дек 2019
    Последнее редактирование: 9 дек 2019
    alexphp нравится это.
  8. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    нужно настроить сервер и возможно будет работать. Смотреть php.ini