Здравствуйте, пытаюсь отправить письмо с помощью функции mail - ошибок никаких нет, но письма не приходят. Пытался отправить письмо на разные ящики (mail, yandex, gmail) - результат тот же самый. Программа sendmail настроена на smtp сервер smtp.mail.ru, порт 465. Пробовал настраивать на yandex-сервер. Настройки в php.ini вроде бы правильные: Поискал по форуму, но не нашёл ничего, что бы могло бы как-то исправить эту ошибку. Кто-нибудь сталкивался с подобным? Код (Text): [mail function] ; For Win32 only. ; http://php.net/smtp SMTP = 465 ; http://php.net/smtp-port smtp_port = 465 ; For Win32 only. ; http://php.net/sendmail-from ; sendmail_from = ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ; http://php.net/sendmail-path sendmail_path = "C:\Program Files\sendmail\sendmail.exe -t" Вот код моего скрипта: PHP: <?php $addr = $_POST['addr']; $theme = $_POST['theme']; $text = $_POST['text']; if (isset($addr) && isset($theme) && isset($text) && $addr != "" && $theme != "" && $text != "") { $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= "Content-type: text/plain; charset=windows-1251" . "\r\n"; $headers .= "From: <qwertyRoman7@mail.ru>" . "\r\n"; $headers .= "Reply-To: <qwertyRoman7@mail.ru>" . "\r\n"; $headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n"; $addr = "Manager ". "<" . $addr . ">"; if (mail($addr, $theme, $text, $headers)) { echo '<h3 id = "newMessage">Сообщение успешно отправлено.</h3>'; } else { echo '<h3 id = "newMessage">Сообщение не отправлено.</h3>'; } } else { echo '<p id = "newMessage">Данные введены неправильно.</p>'; } ?> я поправил тебе код для читабельности. %username%, пользуйся ббкодами [ code ] и [ php ]. пожалуйста! — Модераторъ
это частая ошибка, надо в логи смотреть почтовые. можно отказаться от mail() и использовать phpmailer или типа того. тогда будет проще жить.
Откуда знаешь, что sendmail у тебя настроен, из консоли пробовал почту отправлять? Больше подробностей, пожалуйста: ОС, тип почтовика, маршрутизация и т.д. ( меня вот это настораживает: "C:\Program Files\sendmail\sendmail.exe" ) Или так: "я настроил exim вот по этой инструкции [ ссылка ] проверял так-то" ну это врядли
Я с sendmail'ом горя хлебнул, когда пытался его настраивать, так и не настроил. Зато postfix когда поставил, то он у меня почти сразу работать начал.
@tretstoun, Денвер? --- Добавлено --- До меня кажется дошло: для ТС изменить php.ini из состава Денвер означает "настроить программу sendmail". Ошибочка. Насколько я помню, Денвер содержит некую заглушку для отладки почтовых сообщений. Оно называется sendmail.exe, а реально это фейк, оно складывает письма в файлы.
@machetero постфикс зато при случайном апдейте может перестать работать на старом конфиге и придется писать новый
"это частая ошибка, надо в логи смотреть почтовые." У меня стоят такие настройки в файле sendmail.ini: PHP: 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; Но никаких файлов не создаётся в папке sendmail - ни с ошибками, ни просто логов - ничего нет. --- Добавлено --- ↑ Откуда знаешь, что sendmail у тебя настроен, из консоли пробовал почту отправлять? Из консоли я пробовал соединиться с smtp сервером mail - соединение прошло успешно, но потом стали появляться ошибки, что требуется тип соединения ssl. Программа sendmail у меня настроена согласно инструкции, вот настройки, если они нужны: PHP: [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.mail.ru; ; smtp port (normally 25) smtp_port=465; ; 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=ssl ; 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=mail.ru; ; 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= qwertyRoman77@mail.ru; auth_password= qwerty712 ; if your smtp server uses pop3 before smtp authentication, modify the ; following three lines. do not enable unless it is required. pop3_server= pop.mail.ru pop3_username= qwertyRoman77@mail.ru; pop3_password= qwerty712 ; 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= qwertyRoman77@mail.ru; ; 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= mail.ru ОС - windows xp. --- Добавлено --- @tretstoun, Денвер? У меня apache из состава xampp.
Ну вот тебе и направление. Пока что твой сендмайл НЕ настроен, нет шансов, что для пхп он сделает исключение. --- Добавлено --- @tretstoun, пожалуйста используй ббкоды code и quote при оформлении сообщения.
"требуется тип соединения ssl." У меня же стоит в настройках, что "smtp_ssl=ssl" ... "пожалуйста используй ббкоды code и quote при оформлении сообщения." - ок, я обычно их печатаю, забыл, наверное.