PHP mail под Windows. Отправка почты из PHP скриптов

В этой статье я хочу рассказать об отправке почты из php скриптов под Windows.
С точки зрения php программиста отправка почты выполняется с помощью стандартной функции mail().
И вот тут у многих начинающих разработчиков возникает проблема. Скрипт, прекрасно работающий на сервере хостера, выдает ошибки на локальном компьютере.
Обычно эти ошибки имеют примерно такое описание:
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in E:\www\simplemail\mailer.php on line ......
Дело в том, что функция mail сама по себе почту не отправляет, она просто вызывает программу sendmail, которая в дистрибутив web сервера и php интерпретатора не входит (и не должна).
Sendmail, в свою очередь, для отправки почты использует SMTP сервер.
Таким образом, чтобы php скрипт мог отправлять почту нужно установить и настроить sendmail и SMTP сервер.
Версию sendmail для Windows можно скачать здесь.
Установка и настройка выполняется в три этапа.
1) Распаковываем архив на тот же диск, где установлен php. Например, я создал папку C:\wamp\sendmail.
2) Вносим изменения в файл php.ini:
[mail function]
SMTP =
sendmail_from =
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"
Как видите, нужно только указать путь к sendmail чтобы php мог ее найти.
3) Настраиваем sendmail. Все настройки находятся в файле sendmail.ini (расположен в папке с sendmail).
Но перед тем как приступать к настройке пару слов об SMTP сервере. Вам совсем не обязательно устанавливать сервер на вашем компьютере. Многие почтовые сервисы предоставляют бесплатный доступ к своим серверам.
Ниже я покажу пример настройки sendmail для работы с SMTP сервером mail.ru, но, естественно, вы выбрать любой другой.
Итак, открываем sendmail.ini и устанавливаем следующие параметры:
smtp_server=smtp.mail.ru ; адрес SMTP сервера
smtp_port=25 ; порт SMTP сервера
default_domain=mail.ru ; домен по-умолчанию
error_logfile=error.log ; файл в который будет записываться лог ошибок
debug_logfile=debug.log ; очень полезная на этапе отладки опция. Протоколируются все операции, которые выполняет sendmail
auth_username=account_name@mail.ru ; имя вашего аккаунта
auth_password=account_password ; ваш пароль
; следующие три опции используются если перед авторизацией на SMTP сервере требуется авторизация на POP3 сервере
pop3_server=pop.mail.ru
pop3_username=account_name@mail.ru
pop3_password=account_password
; параметр для команды MAIL FROM
force_sender=account_name@mail.ru
hostname=mail.ru
Теперь не забудьте перезапустить web сервер, чтобы изменения вступили в силу.
Чтобы протестировать работу почты напишем простенький скрипт:
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
<title>Simple Mail</title>
-
</head>
-
<body>
-
<?php
-
$addr = $_POST['addr'];
-
$theme = $_POST['theme'];
-
$text = $_POST['text'];
-
if (isset($addr) && isset($theme) && isset($text)
-
&& $addr != "" && $theme != "" && $text != "") {
-
if (mail($addr, $theme, $text, "From: vova_33@mail.ru")) {
-
echo "<h3>Сообщение отправлено</h3>";
-
}
-
else {
-
echo "<h3>При отправке сообщения возникла ошибка</h3>";
-
}
-
}
-
?>
-
<form action="mailer.php" method="post">
-
<p>
-
<label for="addr">eMail:</label>
-
<input type="text" name="addr" id="addr" size="30" />
-
</p>
-
<p>
-
<label for="theme">Тема письма:</label>
-
<input type="text" name="theme" id="theme" size="30" />
-
</p>
-
<p>
-
<label for="text">Текст письма:</label>
-
<textarea rows="10" cols="20" name="text" id="text"></textarea>
-
</p>
-
<p>
-
<input type="submit" value="Отправить" />
-
</p>
-
</form>
-
</body>
-
</html>
Он создает форму с тремя полями для ввода адреса, темы и содержания письма. Нажатие на кнопку «Отправить» отправит запрос этому же скрипту (строка 23).
Если данные введены, то будет вызвана функция mail (строка 15), которая и отправит письмо. В случае успешной отправки функция возвращает true, в противном случае – false.
Как видите, ничего сложного в настойке почты нет.
Удачи!
Понравилась статья? Подписывайтесь на продолжение
!
Опубликовано в PHP, Web разработка Комментарии (215) »
Комментарии (215)
Вы можете отслеживать обсуждение записи с помощью RSS 2.0 ![]()
Вы также можете оставить комментарий, или трекбек с Вашего сайта.









В состав Денвера входит заглушка для sendmail, которая складывает письма в виде отдельных файлов во временную папку
Денвер считаю вообще какимто выкидешем. Apache 1.3 и PHP 4.1.
А так большое спасибо за настройку. помогла.
Вы когда последний раз его смотрели? В 2005-ом?
Входит, но этот вариант позволяет действительно отправить почту (хотя для тестирования иногда нужна именно заглушка).
Це загальновідомий факт, але ж далеко не всі користуються даним пакетом
Николай Испанюк, В Denwer-3 Apache2, PHP5, MySQL5.
Денверовская заглушка — просто прелесть.
А если "все-таки нужно отправить почту" — то настраиваю smtp провайдера и отправляю. И все
Ни хера не прелесть, та же самая ошибка вываливается также, собственно поэтому я через поиск и попал на эту страницу.
Какая именно ошибка?
не когда не получалось настроить и сейчас не вышло….. руки из каки растут наверное =(
Что именно не вышло? Если дадите описание ошибок, может быть смогу что-то конкретное посоветовать
Владимир! Помогите с ошибкой. Parse error: parse error, unexpected ';' in C:\server\root\sendmail.php on line 13. В вашем скрипте! В PHP не розбираюсь, поэтому не знаю какая именно там ему ; не нравиться! Зарание благодарен!
Это я пропустил. Просто замените все
&на&.Т.е.
&&нужно заменить на&&Если не получится я вышлю вам скрипт почтой
Автору нобелевскую премию или суперприз!!!
Я пол года назад до этой статьи мля 2 дня убил, но так толком и не смог отправить почту и забросил на .. всё это дело, и только сегодня случайно наткнулся на данный шедевр- в итоге результат: 5 мин. настройки php.ini, sendmail.ini почта отправилась по php-функции mail()и дошла до адресата за 1 мин.
Громадное спасибо тебе добрый человек!!!
Я счастлив!!!!!!!!!!
Здоровья, счастья тебе!!!!!!!!!
Да, нобелевку хорошо бы
Автор -ты супер!!!
Так держать!!!
MEGA THANK YOU!!!
Спасибо за совет, очень помог.
Кстати, у меня к денверу тоже неприязнь
спасибо огромное за статью. долго морочил голову с отправкой писем. в результате так просто все решилось
Дружище, ну просто громаднейшая тебе благодарность, выручил!
XAMPP получше Денвера будет.
А чем он лучше?
ИМХО это больше вопрос привычек или предпочтений, а не функциональности. Я лично использую WAMPSERVER, в котором меня практически все устраивает.
А чтобы действительно комфортно себя чувствовать, нужно научиться настраивать конфиги.
У меня пример не работает, в debug.log сообщение
08.07.09 17:31:19 << +OK POP3 server at mail.ru signing off
08.07.09 17:31:19 ** Disconnected.
08.07.09 17:31:19 ** Disconnected.
08.07.09 17:31:19 ** Disconnected.
08.07.09 17:31:19 ** Connecting to smtp.mail.ru ; адрес SMTP сервера:25
08.07.09 17:31:19 ** Disconnected.
08.07.09 17:31:19 ** Disconnected.
08.07.09 17:31:19 ** Socket Error # 11004
Решение проблемы с ошибкой 11004 на http://www.glob.com.au/sendmail неочевидное
Вообще-то там решения нет. Они пишут, что проблема в dns сервере и советуют разбираться с провайдером.
Попробуйте соединиться с сервером с помощью curl, например. Нужно как-то локализовать проблему. Если действительно что-то с dns, то скрипт настраивать можно очень долго.
Появится еще информация, пишите. Я сам с такой проблемой не сталкивался.
У меня было то же самое
08.07.14 16:24:40 << +OK POP3 server at mail.ru signing off
08.07.14 16:24:40 ** Disconnected.
08.07.14 16:24:40 ** Disconnected.
08.07.14 16:24:40 ** Disconnected.
08.07.14 16:24:40 ** Connecting to smtp.mail.ru:25
08.07.14 16:24:52 ** Disconnected.
08.07.14 16:24:52 ** Disconnected.
08.07.14 16:24:52 ** Disconnected.
08.07.14 16:24:52 ** Connect timed out.
Проверил порт SMTP: в Outlook'е стоял порт 2525, а в sendmail.ini : 25
заменил 25 на 2525, перезапустил сервер и все пошло.
Большое спасибо автору статьи.
А у меня так и не заработало..ошибка: Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in …
вот,как я изменила sendmail.ini
smtp_server=smtp.yandex.ru
smtp_port=25
default_domain=yandex.ru
error_logfile=error.log
debug_logfile=debug.log
auth_username=мой_логин@yandex.ru auth_password=пароль
pop3_server=pop.yandex.ru
pop3_username=мой_логин@yandex.ru
pop3_password=пароль
force_sender=мой_логин@yandex.ru
hostname=yandex.ru
в php.ini поудаляла все после "=":
SMTP =
smtp_port =
sendmail_from =
еще есть строчка smtp_port =
я пробовала и ничего не писать, и оставить"=25"
Подскажите,пожалуйста,что не так.И где искать файлы debug.log и error.log?
в php.ini
параметр sendmail_path
выставили со ссылкой на sendmail.exe?
Да,
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"
2Alice
Добавьте в php.ini параметр
sendmail_path = “C:\wamp\sendmail\sendmail.exe -t”
(Нужно указать папку в которую вы распаковали sendmail). Файлы debug.log и error.log будут находится в этой же папке, но созданы они будут только при возникновении ошибок или записи отладочной информации.
Кстати, каждый параметр должен быть записан с новой строки (в вашем комментарии имя и пароль – в одной строке).
Попробуйте, не получится – пишите.
P.S. Не забудьте перезапустить сервер после изменения php.ini
У меня пишет что типа отправленно но письмо не пришодит ((
А что написано в debug.log?
Выполнил всё по данной рекомендации, написало, что сообщение отправлено, на получатель оно не доходит-debug.log
CAPA – это команда по которой сервер должен вернуть список поддерживаемых им функций.
В данном случае он возвращает ошибку (-ERR).
Насколько я знаю, поддержку этой команды можно отключить в настройках сервера.
Как заставить sendmail не отправлять эту команду я не знаю.
Поэтому проще всего изменить сервер. Я проверял с mail.ru.
Что-то не срабатывает, может ли это быть из-за особенности настройки прокси сервера?
08.08.18 15:05:05 ** — MESSAGE BEGIN —
08.08.18 15:05:05 ** To: addres@mail.ru
08.08.18 15:05:05 ** Subject: =?koi8-r?B?98/T09TBzs/XzMXOycUg0MHSz8zRIMkgzM/Hyc7B?=
08.08.18 15:05:05 ** Content-Type: text/plain;
08.08.18 15:05:05 ** MIME-Version: 1.0
08.08.18 15:05:05 ** From: addres@mail.ru
08.08.18 15:05:05 **
08.08.18 15:05:05 **
08.08.18 15:05:05 ** чЩ ЪБТЕЗЙУФТЙТПЧБМЙУШ ОБ УБКФЕ дПОофх.
08.08.18 15:05:05 ** чБЫ ОПНЕТ: b59c67bf196a4758191e42f76670ceba.
08.08.18 15:05:05 ** чБЫ МПЗ¦О: 1
08.08.18 15:05:05 ** чБЫ РБТПМШ: 'RNbI'
08.08.18 15:05:05 ** — MESSAGE END —
08.08.18 15:05:05 ** Authenticating with POP3 server
08.08.18 15:05:05 ** Connected.
08.08.18 15:05:06 << +OK
08.08.18 15:05:06 >> CAPA
08.08.18 15:05:06 << +OK Capability list follows
08.08.18 15:05:06 << TOPUSERLOGIN-DELAY 120PIPELININGEXPIRE NEVERUIDLIMPLEMENTATION Mail.Ru.
08.08.18 15:05:06 >> USER addres@mail.ru
08.08.18 15:05:06 << +OK Password required for user addres@mail.ru
08.08.18 15:05:06 >> PASS password
08.08.18 15:05:06 << +OK addres@mail.ru maildrop has 32 messages (31007744 octets)
08.08.18 15:05:06 >> QUIT
08.08.18 15:05:07 << +OK POP3 server at mail.ru signing off
08.08.18 15:05:07 ** Disconnected.
08.08.18 15:05:07 ** Disconnected.
08.08.18 15:05:07 ** Disconnected.
08.08.18 15:05:07 ** Connecting to smtp.mail.ru:25
08.08.18 15:05:17 ** Disconnected.
08.08.18 15:05:17 ** Disconnected.
08.08.18 15:05:17 ** Disconnected.
08.08.18 15:05:17 ** Connect timed out.
Что-то я не понял. Вы письмо сами себе отправили?
Поля To и From у вас одинаковые.
Попробуйте отправить письмо на какой-нибудь другой ящик.
Я пробовала на разные адреса, просто в вопросе заменила их на addres@mail.ru
Попробуйте использовать рекомендации от mail.ru
(последний комментарий к этому посту).
Судя по отчету, соединение с сервером происходит нормально, он возвращает количество писем в ящике (кстати, их действительно 32?). Но, после этого, с вашей стороны отправляется команда QUIT и сервер, естественно, отключается.
Рекомендации от команды mail.ru
Иногда помогает указать IP-адреса: вместо pop.mail.ru – 194.67.23.102,
smtp.mail.ru – 194.67.23.111
pop.inbox.ru – 194.67.23.6, smtp.inbox.ru – 194.67.23.113
pop.bk.ru – 194.67.23.8, smtp.bk.ru – 194.67.23.114
pop.list.ru – 194.67.23.159, smtp.list.ru – 194.67.23.115
Измените порт SMTP c 25 на порт 2525 или 587.
Увеличте время таймаутов в вашей почтовой программе.
Если все это не помогло, то попробуйте использовать для отправки SMTP
сервер Вашего провайдера.
————————————————-
У меня установлен сервер xammp, вот его настройки:
php.ini
———–
sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"
————————————————-
sendmail.ini
———–
[sendmail]
smtp_server=194.67.23.111
smtp_port=2525
default_domain=mail.ru
error_logfile=error.log
debug_logfile=debug.log
auth_username=ВАШЕ ИМЯ@mail.ru
auth_password=ВАШ ПАСС
pop3_server=pop.mail.ru
pop3_username=ВАШЕ ИМЯ@mail.ru
pop3_password=ВАШ ПАСС
force_sender=ВАШЕ ИМЯ@mail.ru
hostname=mail.ru
защита от спама иногда почту принимает с n_ного раза, из очереди, таким образом происходит борьба с почтовыми прогами спамеров, которые шуруют в 5 потоков по 100шт в минуту(в среднем)
Вывод – нужен собственный SMTP сервер, особенно если почты много.
Обязательно нужен отличный(другой)вариант от sendmail,
только,где его взять для собственного хостинга,
на прова надеятся нет смысла,там свои проблемы.
Пробую пользовать бесплатный CourierMS 1.53…
скажем так себе, хотя версии современнее многообещающие,
триал, типа на 3 пользователя, даже с одним не работают
во внешке…а покупать, конечно можно и приобрести,
только для чего, ради отсылки писем, проще предоставить
пользователю регистрацию без проверки email, последнее
мне самому не очень нравится(мысли вслух)
Помогите плиз!!
Всёравно вылазит ошибка:
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() on line 230
Вот что у меня в php.ini :
SMTP =
sendmail_path ="C:\AppServ\sendmail\sendmail.exe -t"
(Юзаю AppServ, кстати пример простого скрипта в этой статье неправильный, пишет какую-то ошибку в строке 13)..
ещё такой ньюанс у меня самого файла php.ini нету, а есть php.ini-dist и php.ini-recommended. В них я настройки и изменял, почта всё-равно не отправляется..
Вам нужно разобраться какой php.ini используется. Возможно вам нужно переименовать php.ini-recommended в php.ini.
Проще всего проверить так. Подключить в php.ini какую-нибудь библиотеку и посмотреть что выводит phpinfo().
Судя по описанию ошибки php пытается отправить почту через smtp сервер, который установлен на localhost порт 25. Очень похоже, что ваши настройки не применяются вообще.
Здравствуйте! Мучался целый день, такая же проблема как и здесь была у людей, но решения никто не нашел. Я упорный, но не настолько, уже копать незнаю где.
Настроил php.ini
[mail function]
; For Win32 only.
;SMTP = smtp.mail.ru
;smtp_port = 25
; For Win32 only.
;sendmail_from =
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
sendmail_path ="C:\sendmail\sendmail.exe -t"
Настроил sendmail.ini
[sendmail]
smtp_server=smtp.mail.ru
smtp_port=25
default_domain=mail.ru
error_logfile=error.log
debug_logfile=debug.log
auth_username=my@mail.ru
auth_password=mypass
pop3_server=pop.mail.ru
pop3_username=my@mail.ru
pop3_password=mypass
force_sender=my@mail.ru
hostname=mail.ru
Вот что кажет debug.log
08.09.11 01:11:02 ** — MESSAGE BEGIN —
08.09.11 01:11:02 ** To: my@mail.ru
08.09.11 01:11:02 ** Subject: Ltj Bukem
08.09.11 01:11:02 ** From: "рпарпара"
08.09.11 01:11:02 ** Content-Type: text/plain; charset="windows-1251"
08.09.11 01:11:02 ** Return-path:
08.09.11 01:11:02 **
08.09.11 01:11:02 ** jjbg
08.09.11 01:11:02 ** khvj
08.09.11 01:11:02 ** kb
08.09.11 01:11:02 ** — MESSAGE END —
08.09.11 01:11:02 ** Authenticating with POP3 server
08.09.11 01:11:02 ** Connected.
08.09.11 01:11:02 << +OK
08.09.11 01:11:02 >> CAPA
08.09.11 01:11:02 << +OK Capability list follows
08.09.11 01:11:03 << TOPUSERLOGIN-DELAY 120PIPELININGEXPIRE NEVERUIDLIMPLEMENTATION Mail.Ru.
08.09.11 01:11:03 >> USER my@mail.RU
08.09.11 01:11:03 << +OK Password required for user my@mail.ru
08.09.11 01:11:03 >> PASS mypass
08.09.11 01:11:03 << +OK my@mail.ru maildrop has 292 messages (128862208 octets)
08.09.11 01:11:03 >> QUIT
08.09.11 01:11:03 << +OK POP3 server at mail.ru signing off
08.09.11 01:11:03 ** Disconnected.
08.09.11 01:11:03 ** Disconnected.
08.09.11 01:11:03 ** Disconnected.
08.09.11 01:11:03 ** Connecting to 194.67.23.111:25
08.09.11 01:11:13 ** Disconnected.
08.09.11 01:11:13 ** Disconnected.
08.09.11 01:11:13 ** Disconnected.
08.09.11 01:11:13 ** Connect timed out.
Вот что кажет error.log APACHE
sendmail: Error during delivery: Connect timed out.
Пробывал и другие серваки, результат один – отрицательный. Может у кого-то было такое?
Судя по логу. Вы подключились к POP серверу, но не смогли к SMTP (превышен интервал ожидания запроса, т.е. сервер попросту не ответил).
Попробуйте подключиться к нему с помощью telnet
telnet 194.67.23.111 25
Как вы подключены к интернет? Не используете прокси серверов? Почтовые программы (theBat, outlook) почту отправляют?
Интернет на прямую, никаких прокси!
При попытке подключится по telnet вот что вышло:
C:\Documents and Settings\>telnet 194.67.23.111 25
Подключение к 194.67.23.111…Не удалось открыть подключение к этому узлу, на порт 25: Сбой подключения
По вашей рекомендации запустил Outlook правда Express но все же. При отправке выдает ошибку:
Ошибка при соединении с сервером. Учетная запись: 'pop.mail.ru', Сервер: 'smtp.mail.ru', Протокол: SMTP, Порт: 25, Защита (SSL): Нет, Ошибка сокета: 10060, Код ошибки: 0×800CCC0E
Однако все письма что лежали на сервере mail.ru пришли ко мне. Первый раз такое, что то наверное с настройками, только чего именно…
Поставил галочку "Проверка подлинности", почта стала отправляться. Теперь как эту авторизацию настроить в sendmail? Я все делал так как написано тут у вас, но почта не ходит (((
Ура я решил проблему.
вот тут:
auth_username=my@mail.ru
нужно писать вот таак
auth_username=my
т.е. просто указать логин.
Всем спасибо!
Мои поздравления
Похоже в настройках сервера mail.ru произошли изменения. Когда я тестировал скрипт, настройки были именно такие как я привел в статье (я их просто скопипастил).
Но вообще ваш вариант правильнее. username – это имя пользователя (my), а не адрес email (my@mail.ru).
На самом деле я это сделал на работе и все работало. пришел домой и опять не работает, я выпал в осадок!
Оказывается мой провайдер akado.ru вообще закрыл доступ к любим сервакам по smtp : 25. В тек поддержке мне сказали юзайте mail.akado.ru.
Для чего они это сделали не понятно. Создал ящик на акадо все ходит ) Прошу прощения всех кого ввел в заблуждения! Всем спасибо.
Как чувствовал, что что-то (кто-то) блокирует smtp
Большой привет провайдеру.
Здравствуйте, решил отправить сообщение через mail(). Ничего не получалось пока не наткнулся на эту статью. Потом настроил всё это, получилось. Пишет "Сообщение отправлено". Но куда не пытаюсь отправить сообщение, оно не приходит и всё.
З.Ы. && заменил на &&. Скрипт вроде норм
А вот и лог.
########################################
08.09.25 18:21:17 ** — MESSAGE BEGIN —
08.09.25 18:21:17 ** To: address@ya.ru
08.09.25 18:21:17 ** Subject: lo6ara
08.09.25 18:21:17 ** From: LO6ara
08.09.25 18:21:17 **
08.09.25 18:21:17 ** lo6ara
08.09.25 18:21:17 ** — MESSAGE END —
08.09.25 18:21:17 ** Authenticating with POP3 server
08.09.25 18:21:17 ** Connected.
08.09.25 18:21:17 << +OK POP Ya! v1.0na
08.09.25 18:21:17 >> CAPA
08.09.25 18:21:17 << -ERR What?
08.09.25 18:21:17 >> USER name
08.09.25 18:21:17 << +OK password, please.
08.09.25 18:21:17 >> PASS *************
08.09.25 18:21:17 << +OK 0 message(s) 0 bytes.
08.09.25 18:21:17 >> QUIT
08.09.25 18:21:17 << +OK shutting down.
08.09.25 18:21:17 ** Disconnected.
08.09.25 18:21:17 ** Disconnected.
08.09.25 18:21:17 ** Disconnected.
08.09.25 18:21:17 ** Connecting to smtr.yandex.ru:25
08.09.25 18:21:27 ** Disconnected.
08.09.25 18:21:27 ** Disconnected.
08.09.25 18:21:27 ** Disconnected.
08.09.25 18:21:27 ** Connect timed out.
###########################################
У вас в логе
Connecting to smtr.yandex.ru:25
а должно быть
Connecting to smtp.yandex.ru:25
Исправляйте sendmail.ini
Владимир, если вам не трудно помогите. Скрипт не пашет почему не пйму, в логах sendmail нет ни чего, при отправке сообщения бросто все сбрасывается. Пользуюсь Apache2.2
Пришлите, пожалуйста, скрипт который запускаете (сам файл). vova_33 [собака] gala.net
ошибка, пожалуйста помогите.
Not Found
The requested URL /rassylka/mailer.php was not found on this server.
Apache/2.0.63 (Win32) PHP/5.2.1 Server at localhost Port 80
Возможно, скрипт (который выше представлен) Вы разместили на Вашем сервере НЕ в /rassylka/mailer.php ! В общем если так, то или переименуйте Ваш скрипт в mailer.php или замените в нём form action="sendmail.php" на название вашего скрипта.
Упс… А редактировать нельзя, как я понял…
В общем надо было так:
…
или замените в нём form action="mailer.php" на название вашего скрипта.
Что-то тоже мои письма не доходят… Не пойму. Уж как только не крутил настройки, перезапуская каждый раз Apache… И причём в папке с sendmail.php не создаются error.log и debug.log. Когда сам создал – то они всё равно не заполняются ничем…
Вот такое было в sendmail.ini на момент написание этого вопросика:
smtp_server=smtp.list.ru
smtp_port=2525
default_domain=list.ru
error_logfile=error.log
debug_logfile=debug.log
auth_username=имя_почтового_ящика
auth_password=пароль_почтового_ящика
pop3_server=pop.list.ru
pop3_username=имя_почтового_ящика
pop3_password=пароль_почтового_ящика
force_sender=адрес_моего_почтового_ящика
hostname=list.ru
…Почему непойму…
Проверьте еще раз php.ini, там должно быть:
SMTP =sendmail_from =
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"
В последней строке нужно указать ваш путь к sendmail
Не sendmail.php, а sendmail.exe. Логи могут не создаваться по двум причинам:
1) отсутствуют права на запись в папку с логами;
2) sendmail не запускается вообще.
Да, ну это понятно, конечно, что sendmail.exe!!!
Всё это дело у меня на моём компе дома. ОС – Windows XP, вроде тут с правами не должно быть проблем. Во всяком случае php может создавать, удалять, редактировать файлы и папки. Путь к sendmail.exe указал (я его запихнул в Program Files, может лучше в папку с самим php скопировать?)
Вот php.ini у меня (то, что относится к mail):
SMTP =
smtp_port =
sendmail_from =
sendmail_path = "C:\Program Files\sendmail\sendmail.exe -t"
;mail.force_extra_parameters =
Может это из-за пробела в пути (ну, Progam[пробел]Files)???
Да, пробел однозначно лучше убрать.
Вся строка заключена в кавычки, поэтому он может считать, что со слова Files начинаются параметры.
Папка с:\sendmail\ вполне подойдет
спасибо, разобралась)) только сам метод mail не отправляет: возвращает false в чем может быть причина?
Проверила, усе так, но "При отправке сообщения возникла ошибка"
1) отсутствуют права на запись в папку с логами; – a как это проверить?
заранее спасибо
Какая операционка? Windows или Linux?
windows OC
Тогда, скорее всего, права на запись у вас есть
Если вы сами можете создать файл в папке с sendmail, то точно есть.
Проверьте еще раз настройки в php.ini и sendmail.ini. Если ошибки не найдете присылайте мне эти два файла и ваш скрипт почтой (vova_33[at]gala.net).
Ура! В другой папке (без пробелов) – заработало!
Народ, что может сие означать?
08/11/04 13:04:18 ** Disconnected.
08/11/04 13:04:18 ** sender address must match authenticated user
Вы просто скопировали скрипт, который представлен в этой теме вверху? Если да поменяйе:
mail($addr, $theme, $text, "From: vova_33@mail.ru") – замените vova_33@mail.ru на Ваш почтовый адрес.
sender address must match authenticated user
адрес отправителя должен совпадать с адресом авторизовавшегося пользователя
ага разобралась, когда меняла с gmail на mail в sendmail.ini не везде ящик поменяла))
Круто! Все получилось!
Помогите пожалоста подключить gmail к sendmail – уже несколько дней безуспешніх поисков,,,(((
файл конфигурации выглядет так:
[sendmail]
smtp_server=smtp.gmail.com
smtp_port=465
default_domain=gmail.com
error_logfile=error.log
debug_logfile=debug.log
auth_username=kurier.online@gmail.com
auth_password=2k******
pop3_server=pop.gmail.com
pop3_username=kurier.online@gmail.com
pop3_password=2k.*****
force_sender=kurier.online@gmail.com
hostname=gmail.com
некоторые параметры взяти с этой статьи
http://mail.google.com/support/bin/answer.py?answer=13287
Согласно инструкций включил РОР на миле.
В debug.log постоянно следующее записи
08.11.15 13:57:13 ** — MESSAGE BEGIN —
08.11.15 13:57:13 ** To: back.sasha@gmail.com
08.11.15 13:57:13 ** Subject: тут пишеш тему листа
08.11.15 13:57:13 ** From: kurier.online@gmail.com
08.11.15 13:57:13 **
08.11.15 13:57:13 ** Це з мого сервака
08.11.15 13:57:13 ** — MESSAGE END —
08.11.15 13:57:13 ** Authenticating with POP3 server
08.11.15 13:57:23 ** Disconnected.
08.11.15 13:57:23 ** Disconnected.
08.11.15 13:57:23 ** Disconnected.
08.11.15 13:57:23 ** Connect timed out.
Делал для маил ру – прекрасно пашет но с gmail никак
был бы очень благодарен за пример файла с работающими настройками
Если я не ошибаюсь, сейчас к smtp серверу gmail подключиться нельзя.
Попробуйте другой сервер.
Значит невозможно. А Вы (Владимир) говорите сейчас – значит это временно?
Мне тут расказивали в хостподдержке об использовании pop3s в гугле. говорили вот так:
Цитата – "Скорее всего, тот сендмейл, о котором вы пишете не поддерживает соединение через ssl, а gmail требует ssl."
Тоесть возможно есть другие новее версии даной програмы что поддерживают ssl.
Вы говорите временно – я просто не понял рамок – это было раньше но сейчас нет???.. Пожалоста скажите точнее.
Я имел ввиду, что раньше работало, а сейчас они отключили. Дело в том, что сам я не пробовал подключаться. Просто видел старый топик на каком-то форуме. Там было описание настроек и через несколько месяцев комментарий, что тема (работа с smtp) уже не актуальна.
POP3 у них работает однозначно, но он предназначен для получения почты, т.е. вы можете настроить Outlook, The Bat! и т.п. софт для получения почты без входа на сайт.
Для отправки почты нужен доступ к SMTP серверу.
Насчет ssl я не уверен, по-моему в настройках gmail его можно отключить.
В любом случае не вижу смысла возиться. Описанный здесь вариант отправки писем хорошо подходит для тестирования приложений, а тут без разницы какой почтовый ящик использовать (mail.ru или gmail). В рабочем варианте отправка будет скорее всего через SMTP сервер хостера или ваш собственный.
да в том и дело что я начинающий хостер – настроил сервак нормально а почта галимая – стандартная виндовская – не на все ищвесные почтовики доходит – на gmail, mail.ru, bigmir доходит на ukr.net например никак. Но всеравно огромное спасиба вам за ответ и за статью.
Кстати а вы не знаете как правильно подключить к виндовской почте… windows server 2003
буду очень благодарен за ответ или ссылку на него.
Честно говоря, нет. Один раз настраивал почтовый сервер под Win2003, но это был Kerio Mail Server. Проблем с ним не было, правда и нагрузка была совсем небольшая.
Владимир, ты не прав, статья как раз к стати и актуальна. Я настроил как описано и все работает, главное ребята кто работает через какие прокси, или еще что порты открывайте 25, и т д. , а тебе Владимир скажу, не в води людей в заблуждение, тебе срочно нужно нагнать свои знания в программирование.
Я не очень понял о какой именно статье идет речь. Если об этой, то не понимаю как я мог написать, что моя же статья не актуальна?
Если о подключении к gmail, то я честно написал, что "сам подключаться к нему не пробовал, а видел топик на каком-то форуме".
И не ясно какое отношение имеет программирование к настройке почты. Это скорее администрирование
Господа помогите плиз, не могу понять в чем косяк… при отправки все уходит нормально, НО если в $theme = $_POST['theme'] тема написано русскими символами, то получателю пишется тоесть он не создает тему, а вот если в латинице то тема появляеться. почему?
забыл дописать…
ОС Linux, PHP5, отправка через POSTFIX
А какая кодировка страницы?
Можно попробовать использовать функцию mb_convert_encoding, только нужно знать что во что перекодировать.
Попробуйте как минимум отправить русский текст в utf-8 и windows-1251.
Уважаемый Владимир. Сделал всё по вашей статье (скрипт правда взял свой) всё заработало! Спасибо огромное!
Но. У меня в скрипте так же имеется поле "адрес отправителя". Пока я не забил туда свой собственный адрес – письмо отправить не мог.
Внимание, вопрос. Как сделать, чтобы письмо приходило от того, кто форму заполнил (и своё мыло забил)? Есть ли "шаровые" smtp и pop, не требующие авторизации? Или может вы знаете другие решения?
Заранее благодарю.
Смотрите строку 15, вызов функции mail, четвертый параметр. В нём указывается адрес отправителя. Я использовал скрипт только для отладки, поэтому жестко прописал свой адрес.
Никогда о таких не слышал. "Шаровые" есть (тотже mail.ru), а вот "не требующие авторизации" – таких не знаю.
Владимир, еще один момент. В логах sendmail имеется такая запись об ошибке
09.02.15 18:33:31 : sender address must match authenticated user
скажите, а вообще возможно сделать адрес отправителя не совпадающим с аккаунтом на mail.ru? Ну и чтобы всё работало, естественно
Если возможно, то напишите как, пожалуйста, а то я все пальцы об клавиатуру сточил в попытках…
В идеале хотелось бы работал следующий скрипт:
<?php
session_start();
$admin = 'мой_аккаунт@mail.ru';
if ( isset( $_POST['sendMail'] ) ) {
$name = substr( $_POST['name'], 0, 64 );
$email = substr( $_POST['email'], 0, 64 );
$subject = substr( $_POST['subject'], 0, 64 );
$message = substr( $_POST['message'], 0, 250 );
$error = ";
if ( empty( $name ) ) $error = $error.'Не заполнено поле "Имя"';
if ( empty( $email ) ) $error = $error.'Не заполнено поле "E-mail"';
if ( empty( $subject ) ) $error = $error.'Не заполнено поле "Тема"';
if ( empty( $message ) ) $error = $error.'Не заполнено поле "Сообщение"';
if ( !empty( $email ) and !preg_match( "#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i", $email ) )
$error = $error.'поле "E-mail" должно соответствовать формату somebody@somewhere.ru';
if ( !empty( $error ) ) {
$_SESSION['sendMailForm']['error'] = 'При заполнении формы были допущены ошибки:'.$error.";
$_SESSION['sendMailForm']['name'] = $name;
$_SESSION['sendMailForm']['email'] = $email;
$_SESSION['sendMailForm']['subject'] = $subject;
$_SESSION['sendMailForm']['message'] = $message;
header( 'Location: '.$_SERVER['PHP_SELF'] );
die();
}
$body = "АВТОР:\r\n".$name."\r\n\r\n";
$body .= "E-MAIL:\r\n".$email."\r\n\r\n";
$body .= "ТЕМА:\r\n".$subject."\r\n\r\n";
$body .= "СООБЩЕНИЕ:\r\n".$message;
$body = quoted_printable_encode( $body );
$theme = '=?windows-1251?B?'.base64_encode('Заполнена форма на сайте').'?=';
$headers = "From: ".$_SERVER['SERVER_NAME']." \r\n";
$headers = $headers."Return-path: \r\n";
$headers = $headers."Content-type: text/plain; charset=\"windows-1251\"\r\n";
$headers = $headers."Content-Transfer-Encoding: quoted-printable\r\n\r\n";
if ( mail($admin, $theme, $body, $headers) )
$_SESSION['success'] = true;
else
$_SESSION['success'] = false;
header( 'Location: '.$_SERVER['PHP_SELF'] );
die();
}
function quoted_printable_encode ( $string ) {
// rule #2, #3 (leaves space and tab characters in tact)
$string = preg_replace_callback (
'/[^\x21-\x3C\x3E-\x7E\x09\x20]/',
'quoted_printable_encode_character',
$string
);
$newline = "=\r\n"; // '=' + CRLF (rule #4)
// make sure the splitting of lines does not interfere with escaped characters
// (chunk_split fails here)
$string = preg_replace ( '/(.{73}[^=]{0,3})/', '$1'.$newline, $string);
return $string;
}
function quoted_printable_encode_character ( $matches ) {
$character = $matches[0];
return sprintf ( '=%02x', ord ( $character ) );
}
?>
Отправить письмо
<?php
if ( isset( $_SESSION['success'] ) ) {
if ( $_SESSION['success'] )
echo 'Письмо успешно отправлено';
else
echo 'Ошибка при отправке письма';
unset( $_SESSION['success'] );
}
if ( isset( $_SESSION['sendMailForm'] ) ) {
echo $_SESSION['sendMailForm']['error'];
$name = htmlspecialchars ( $_SESSION['sendMailForm']['name'] );
$email = htmlspecialchars ( $_SESSION['sendMailForm']['email'] );
$subject = htmlspecialchars ( $_SESSION['sendMailForm']['subject'] );
$message = htmlspecialchars ( $_SESSION['sendMailForm']['message'] );
unset( $_SESSION['sendMailForm'] );
} else {
$name = ";
$email = ";
$subject = ";
$message = ";
}
?>
<form action="" method="POST">
Имя:<input type="text" name="name" maxlength="64" value="" />
E-mail:<input type="text" name="email" maxlength="64" value="" />
Тема:<input type="text" name="subject" maxlength="64" value="" />
Сообщение:
заранее благодарю
>>sender address must match authenticated user
>>адрес отправителя должен соответствовать авторизировавшемуся пользователю
Т.е. похоже, что mail.ru сделать это вам не даст.
Кроме того в параметре From нужно указывать email, а не адрес сервера.
Речь об этой строке
$headers = "From: ".$_SERVER['SERVER_NAME']." \r\n";
должно быть что-то вроде
$headers = "From: myemail@mydomain.ru \r\n";
Т.е. если сообщение должно приходить на мой ящик, то только от меня самого?
Жаль, но тем не менее спасибо, за помощь с sendmail.
Немного не так. На ваш ящик сообщение может прийти от кого угодно. Но вы можете отправить письмо только от себя. Т.е. в поле "От" должны указать адрес, совпадающий с аккаунтом в mail.ru
У меня нету ошибок, но и "Сообщение отправлено" тоже нету? Помогите! Буду заранее благодарен.
Запускайте режим отладки
debug_logfile=debug.log
и смотрите что записано в debug.log.
Здравствуйте ещё раз!!!
Вроде некоторое время всё работало, но потом вдруг перестало. В папке с программой sendmail появилось несколько новых файлов – crash.txt, crash-2.txt и т.д. Что ему надо я не пойму… Может Вы знаете? Файлы в архиве:
http://ifolder.ru/10680006
Насколько я понял основная ошибка – Cannot connect to POP server (невозможно подключиться к POP серверу).
Если раньше отправка работала и вы не изменяли настройки, то возможны такие варианты:
1) у вас пропала связь или вы установили файервол, кото (как проверить, думаю, вы сами разберетесь);
2) POP сервер стал недоступен (подождать пока заработает или использовать другой);
3) проблемы с web сервером или PHP (обычно исправляется рестартом, если, конечно, настройки не изменялись).
Здравствуйте, я проверяю форму по отправке почты на локальном сервере. При отправлении данных формы пишет, что сообщение отправлено, а в файле debug.log вот это. Объясните пожалуйста последние 4 строчки
09.03.02 14:40:45 ** — MESSAGE BEGIN —
09.03.02 14:40:45 ** To: admin@mail.ru
09.03.02 14:40:45 ** Subject: =?windows-1251?B?z/Do4uXyIQ==?=
09.03.02 14:40:45 ** Date: Mon, 2 Mar 2009 14:40:45 +0300
09.03.02 14:40:45 ** Return-Path: localhost@mail.ru
09.03.02 14:40:45 ** From: =?windows-1251?B?wuDw/w==?=
09.03.02 14:40:45 ** Message-ID:
09.03.02 14:40:45 ** X-Priority: 3
09.03.02 14:40:45 ** X-Mailer: PHPMailer [version 1.73]
09.03.02 14:40:45 ** MIME-Version: 1.0
09.03.02 14:40:45 ** Content-Transfer-Encoding: 8bit
09.03.02 14:40:45 ** Content-Type: text/html; charset="windows-1251"
09.03.02 14:40:45 **
09.03.02 14:40:45 **
09.03.02 14:40:45 ** Имя отправителя:user
09.03.02 14:40:45 ** Контактный телефон:124234343
09.03.02 14:40:45 ** Контактный email:localhost@mail.ru
09.03.02 14:40:45 ** Сообщение:вмии
09.03.02 14:40:45 **
09.03.02 14:40:45 ** — MESSAGE END —
09.03.02 14:40:45 ** Authenticating with POP3 server
09.03.02 14:40:46 ** Disconnected.
09.03.02 14:40:46 ** Disconnected.
09.03.02 14:40:46 ** Socket Error # 10061Connection refused.
Я только начинаю знакомится с рнр,наверное сейчас глупый вопрос задам, скажите при тестировании формы на локальном сервере что нужно писать в строке smtp_server=?
Хочу сразу уточнить. У вас локальный web сервер (Apache) или или локальный SMTP?
Эта статья написана для локального web сервера, SMTP используется внешний (в примере mail.ru).
Последние четыре строчки означают, что после вы не смогли авторизоваться на POP3 сервере. Точнее не смогли даже подключиться к нему. Посмотрите комментарий Виталия немного выше. Он привел лог с удачной авторизацией.
Эта ошибка может возникать по нескольким причинам. Например, если сервер недоступен (перегружен, вообще не работает) или ваш файервол не пускает PHP в интернет и т.п.
Строку smtp_server= в файле php.ini нужно оставить пустой, а в файле sendmail.ini в этой строке указываестя адрес сервера к которому вы подключаетесь.
Здравствуйте, я проверяю форму по отправке почты. При отправлении данных пишет, что сообщение отправлено,однако до адресата письмо не доходит. файл debug.log:
09.03.05 23:47:07 ** — MESSAGE BEGIN —
09.03.05 23:47:07 ** To: gleb@mail.ru
09.03.05 23:47:07 ** Subject: проверка
09.03.05 23:47:07 ** From: my_mail@mail.ru
09.03.05 23:47:07 **
09.03.05 23:47:07 ** 3уввввввввввввв
09.03.05 23:47:08 ** — MESSAGE END —
09.03.05 23:47:09 ** Authenticating with POP3 server
09.03.05 23:47:09 ** Connected.
09.03.05 23:47:09 << +OK
09.03.05 23:47:09 >> CAPA
09.03.05 23:47:09 << +OK Capability list follows
09.03.05 23:47:10 << TOPUSERLOGIN-DELAY 120PIPELININGEXPIRE NEVERUIDLIMPLEMENTATION Mail.Ru.
09.03.05 23:47:10 >> USER my_mail@mail.ru
09.03.05 23:47:11 << +OK Password required for user vesna_yuliya@mail.ru
09.03.05 23:47:11 >> PASS my_password
09.03.05 23:47:11 << +OK my_mail@mail.ru maildrop has 18 messages (2652160 octets)
09.03.05 23:47:11 >> QUIT
09.03.05 23:47:11 << +OK POP3 server at mail.ru signing off
09.03.05 23:47:11 ** Disconnected.
09.03.05 23:47:11 ** Disconnected.
09.03.05 23:47:11 ** Disconnected.
09.03.05 23:47:11 ** Connecting to smtp.mail.ru ;:25
09.03.05 23:47:14 ** Disconnected.
09.03.05 23:47:14 ** Disconnected.
09.03.05 23:47:14 ** Disconnected.
09.03.05 23:47:14 ** Socket Error # 11001Host not found.
Может быть подскажите в чем причина, заранее спасибо
Смотрите строку
Connecting to smtp.mail.ru ;:25
Похоже лишняя точка с запятой её быть не должно. Наверное, случайно поставили в конфиге.
Здравствуйте Владимир! Помогите мне пожалуйста настроить работу почттовых скриптов на денвере-3!!! Напишите пошагово что нужно сделать! Зарание огромное спасибо!
Здравствуйте Владимир! Помогите мне пожалуйста настроить работу почтовых скриптов на Денвере-3!!! Напишите пошагово что нужно сделать! Заранее огромное спасибо!
Здравствуйте, я не работал с денвером-3, поэтому пошаговой инструкции я не напишу.
Но принцип остается тем же самым. Вам нужно установить sendmail, внести изменения в php.ini (они подробно расписаны в статье) и настроить конфиг sendmail (тоже пример настроек показан).
скажите а что обозначает:
You don't have permission to access /< on this server.?
Что у вас нет доступа к папке в которую вы пытаетесь зайти. Кстати, угловых скобок в адресе быть не должно.
Появление такого сообщения зависит от настроек сервера. Попробуйте добавить в корень сайта (адрес /) файл index.html с какой-нибудь страницей.
скажите а что обозначает:
You don't have permission to access /< on this server.?
Подскажите как настроить sendmail для localhost
Использую AppServ, sendmail установил в D:\AppServ\sendmail
Задача отправлять уведомление при появлении нового комментария!
Пробовал настроить для yandex, но ничего не выходит и при этом не создаются файлы error и debug… Заранее спасибо
Если не создаются файлы error и debug, то скорее всего sendmail вообще не запускается. Т.е. проблема в php.ini.
В любом случае, пока не будет хоть каких-нибудь сообщений об ошибках сложно что-то сказать.
530 Authentication required – вот такую ошибку сейчас выдает…
Эта запись в debug.log?
Значит вы не прошли аутентификацию. Нужно проверить параметры:
auth_username=account_name@mail.ru ; имя вашего аккаунтаauth_password=account_password ; ваш пароль
; следующие три опции используются если перед авторизацией на SMTP сервере требуется авторизация на POP3 сервере
pop3_server=pop.mail.ru
pop3_username=account_name@mail.ru
pop3_password=account_password
Скажите, а надо ли на localhost в pop3_server писать "pop.localhost" или все-таки просто "localhost"?..
ЯмАеЦ
localhost??? А у Вас установлен почтовый сервер? Я насколько понимаю, sendmail в общем-то предназначена для того, чтобы с чужих почтовых серверов (того же mail.ru или yandex.ru) письма отправлять… А если у Вас действительно свой почтовый сервер – тогда мне кажется, Вам и sendmail не нужен…?
2ЯмАеЦ
В предыдущих комментариях вы писали, что пытались подключиться к яндексу. Значит и указывать нужно адрес smtp сервера яндекса.
Oleg абсолютно прав. localhost указывает на ваш компьютер, а значит на нем должен быть установлен smtp сервер. И в этом случае sendmail вам не нужен. Вы можете в php.ini указать вашего адрес smtp сервера и скрипты будут работать с ним напрямую.
Насколько я знаю, этот вариант более производительный чем отправка через sendmail, но и с настройки сложнее.
Отличная статья! Просто 5+!
Только она и помогла мне настроить почту.
Поставила настройки как указано и все сразу пошло. Большое спасибо!
нужна помощь помогите плиз срочно даже платно согласен((((
А в чем проблема?
Подскажите, почему не отправляется. В debug следующее:
09.04.07 13:43:32 ** Authenticating with POP3 server
09.04.07 13:43:32 ** Connected.
09.04.07 13:43:32 << +OK
09.04.07 13:43:32 >> CAPA
09.04.07 13:43:32 << +OK Capability list follows
09.04.07 13:43:33 << TOPUSERLOGIN-DELAY 120PIPELININGEXPIRE NEVERUIDLIMPLEMENTATION Mail.Ru.
09.04.07 13:43:33 >> USER my@mail.ru
09.04.07 13:43:33 << +OK Password required for user yurapd@mail.ru
09.04.07 13:43:33 >> PASS my_password
09.04.07 13:43:33 << +OK my@mail.ru maildrop has 0 messages (0 octets)
09.04.07 13:43:33 >> QUIT
09.04.07 13:43:33 << +OK POP3 server at mail.ru signing off
09.04.07 13:43:33 ** Disconnected.
09.04.07 13:43:33 ** Disconnected.
09.04.07 13:43:33 ** Disconnected.
09.04.07 13:43:33 ** Connecting to smtp.mail.ru:25
09.04.07 13:43:43 ** Disconnected.
09.04.07 13:43:43 ** Disconnected.
09.04.07 13:43:43 ** Disconnected.
09.04.07 13:43:43 ** Disconnected.
09.04.07 13:43:43 ** Connect timed out.
В php пишет, что все отправилось. А здесь, как я понял, никак не соединиться с smtp.mail
Да, похоже вы правы. Почему-то не соединяется с smtp сервером. (Connect timed out – превышено время ожидания соединения).
1) проверьте еще раз настройки
2) попробуйте соединиться с другим сервером
3) попробуйте соединиться позже, может это временные проблемы mail.ru.
4) если есть файервол, отключите.
У меня почта не отправлялась через mail.ru, пока я в их помощи не вычитал, что поле From должно совпадать с именем ящика.
Т.е. "From: vova_33@mail.ru" не прокатывает
Точно, я забыл об этом написать. Просто предполагается, что у вас возможностей не больше чем при работе через обычный интерфейс.
if (isset($addr) && isset($theme)
очень неудобный пример
&& вместо && было бы кстати
if (isset($addr) & amp; & amp; isset($theme)
очень неудобный пример
'&&' вместо '& amp; & amp;' было бы кстати
и комменты тут неправильно сохраняются, напишите '& amp;' без пробела – потом виден только один значок…
а так, спасибо за статью, помогла.
Спасибо за замечание. WP к сожалению автоматически исправляет некоторые символы.
Ура! Заработало!
Вместо smtp_port=25 поставил 587 для mail.ru
Спасибо огромное!
Не за что.
А где у них сказано про 587 порт?
В справке указаны только 25 и 2525.
Нашел вот здесь: http://www.mail.ru/pages/help/2.html#2333
Спасибо!
Отправить письмо
Имя:
E-mail:
Тема:
Сообщение:
Уважаемый Владимир скрипт нормально работает но при размещении на хосте отправки сообщений нет просит прописать путь к sendmail.
Подскажите где в скрипте правильно прописать путь к sendmail пробовал разные варианты результат нулевой.
Уважаемый Владимир скрипт нормально работает но при размещении на хосте отправки сообщений нет просит прописать путь к sendmail.
Подскажите где в скрипте правильно прописать путь к sendmail пробовал разные варианты результат нулевой.
Путь к sendmail должен быть прописан не в скрипте, а в php.ini.
Если доступа к php.ini у вас нет, то попробуйте в начале скрипта добавить:
ini_set(PHP_INI_SYSTEM, "путь_к_sendmail")
Учтите, что хостер может запретить использование ini_set.
Размещение sendmail узнать можно у хостера. Или посмотреть в панели управления хостингом.
у меня вот такая проблема, все сделал по тексту. (
php.ini
[mail function]
SMTP = localhost
sendmail_from = olegs.volminskis@ru.lv
sendmail_path = "C:\WebServers\sendmail\sendmail.exe -t"
sandmail.ini
smtp_server=smtp.mail.ru
smtp_port=25
default_domain=mail.ru
error_logfile=error.log
debug_logfile=debug.log
auth_username=account_name@mail.ru
auth_password=mypass
pop3_server=pop.mail.ru
pop3_username=account_name@mail.ru
pop3_password=mypass
force_sender=account_name@mail.ru
hostname=mail.ru
debug.log выдает
09.05.06 16:39:03 ** — MESSAGE BEGIN —
09.05.06 16:39:03 ** To: boromir18@mail.ru
09.05.06 16:39:03 ** Subject: Test
09.05.06 16:39:03 ** From: vova_33@mail.ru
09.05.06 16:39:03 **
09.05.06 16:39:03 ** lalala
09.05.06 16:39:03 ** — MESSAGE END —
09.05.06 16:39:03 ** Authenticating with POP3 server
09.05.06 16:39:04 ** Connected.
09.05.06 16:39:04 << +OK
09.05.06 16:39:04 >> CAPA
09.05.06 16:39:04 << +OK Capability list follows
09.05.06 16:39:04 << TOPUSERLOGIN-DELAY 120PIPELININGEXPIRE NEVERUIDLIMPLEMENTATION Mail.Ru.
09.05.06 16:39:04 >> USER account_name@mail.ru
09.05.06 16:39:04 << +OK Password required for user account_name@mail.ru
09.05.06 16:39:04 >> PASS mypass
09.05.06 16:39:14 << -ERR Password supplied for "account_name" is incorrect
09.05.06 16:39:14 << +OK POP3 server at mail.ru signing off
09.05.06 16:39:14 >> QUIT
09.05.06 16:39:14 ** Disconnected.
09.05.06 16:39:14 ** Disconnected.
09.05.06 16:39:14 ** Disconnected.
09.05.06 16:39:14 ** Password supplied for "account_name" is incorrect
error.log
09.05.06 16:03:43 : Password supplied for "account_name" is incorrect
09.05.06 16:04:06 : Password supplied for "account_name" is incorrect
09.05.06 16:14:35 : Password supplied for "account_name" is incorrect
09.05.06 16:22:02 : Password supplied for "account_name" is incorrect
Судя по логам ситуация однозначная. Сервер отвечает "-ERR Password supplied for "account_name" is incorrect", т.е. "ОШИБКА пароль, приведенный для "account_name" неверный".
Кроме того,
sendmail_from =
нужно оставить пустым
и в поле From нужно указать ваш email (mail.ru не позволит вам отправить письмо с обратным адресом, не совпадающим с адресом вашего аккаунта).
Целый день перекопошил интернет в поисках более менее нормального описания отправки почты, и только у вас с трудом но получилось.
Спасибо! =)
Хотя с mail.ru так и не получилось. перепробовал все, но никак. Но поменял на другой хост и сразу сработало. Еще раз спасибо! =)
Кстати, есть ли какой-то способ пройти через прокси сервер (например на работе)?
По-моему, можно, но я не пробовал. Если в настройках не найдете, есть программа ProxyCap используется для туннелирования данных через прокси. Т.е. sendmail отправляет данные как обычно, ProxyCap перехватывает их и перенаправляет через прокси.
У меня вот такая ошибка постоянно вылазит, помогите что с эти м сделать надо???
Message was not accepted — it contains invalid headers. More specially, 'From:' header must match user you are sending mail from. See http://www.mail.ru/pages/help/261.html for details.
Это значит, что mail.ru не разрешает вам подменивать обратный адрес (поле From). Т.е. если вы отправляете письмо с аккаунта my_name@mail.ru, то в поле From письма должно быть my_name@mail.ru.
Сделал все по инструкции:
php.ini
—–
[mail function]
; For Win32 only.
;SMTP = localhost
;smtp_port = 25
SMTP =
sendmail_from =
sendmail_path = "C:\sendmail\sendmail.exe -t"
sendmail.ini
—–
[sendmail]
smtp_server=smtp.yandex.ru
smtp_port=25
default_domain=yandex.ru
error_logfile=error.log
debug_logfile=debug.log
auth_username=*****@yandex.ru
auth_password=*****
pop3_server=pop3.yandex.ru
pop3_username=*****@yandex.ru
pop3_password=*****
force_sender=*****@yandex.ru
hostname=yandex.ru
Но файлы error.log и debug.log даже не думали создаваться. При этом функция mail() срабатывает корректно. И почта не доходит до получателя.
В чем может быть проблема?
Перезапускали apache?
Если debug.log не создался, то похоже sendmail не запускался вообще. Проверьте еще раз путь к программе.
Да, апач перезапускал. Путь к sendmail тоже проверил. Грешу все таки на версию sendmail – думаю какая-то нестабильная. Не могли бы вы выслать мне вашу версию на webpro_group@bk.ru (а то ссылка в вашей статье уже нерабочая). Спасибо!
Готово.
Кстати, ссылка у меня открылась.
Владимир, спасибо за файл! Все заработало!!
Не за что
Здравствуйте, Владимир!
Подскажите пожалуйста, описанный Вами пример предполагает наличие Mail агента у пользователя или нет?
Могу я в качестве "From: vova_33@mail.ru" указать вообще не существующий e-mail или это должен быть динамический параметр, если форму заполняют разные пользователи? Т.е. идея у меня какая: пользователь заполняет форму, а я ее получаю как e-mail при этом все заполненные формы должны приходить с одного адреса.
Подскажите пожалуйста!
Mail агент пользователю не нужен.
Нужно зарегистрироваться на почтовом сервере, который поддерживает SMTP (тот же mail.ru) и в настройках sendmail указать ваши параметры подключения. Все письма будут приходить вам именно с этого ящика.
Использовать в поле From не существующий e-mail нельзя, т.к. mail.ru не даст вам отправить такое письмо. В поле From должен быть указан ящик, который вы зарегистрировали.
Т.е. в вашем случае нужно 2 ящика: 1 для отправки писем, на 2-ой вы будете их получать.
На самом деле вполне достаточно одного!
По крайней мере я без проблем могу со своего адреса отправлять письма на свой же адрес. Доходят! =D
Я не подумал об этом варианте
Ребята сколько можно елозить mail.ru
Стандартные настройки после регистрации
на gmail.com , а именно:
smtp.gmail.com
port: 465
login: pupkin@gmail.com
password: qwerty
Безопасное соединение SMTP – SSL
————————————————————–
p/s как альтернатива для отправки писем регистрации и восстановления паролей для движков…:)
Спасибо за настройки, я тоже с gmail экспериментировал.
Вообще подходит любой сервер с поддержкой SMTP.
А как настроить php.ini так, чтобы письма отправлялись с локального компьютера и приходили на локальный компьютер? У меня стоит SMTP-сервер на локальном. Через Outlook Express я спокойно отправляю и получаю письма на виртуальные адреса.
У меня для gmail работает на таких параметрах:
define('HOSTNAME', 'ssl://smtp.gmail.com');
define('PORTNUMBER', 465);
define('EMAILACCOUNT', 'account_name@gmail.com');//!!! с доменом
define('ACC_PASS', 'password');
p.s. работает с пакетом phpmailer
Спасибо за пример!
Владимир, спасибо вам огромное! Использовал свой скрипт, работает идеально, вот правда только подглючивает что-то. Очень благодарен за статью!
Удачи во всех ваших начинаниях!
Супер!!! Респект и уважуха всего на 3 мин работы и все работает
Владимир, большое спасибо за статью!
Только проверочный скрипт сработал лишь после того, как я вынес PHP-код в отдельный файл mailer.php, иначе не работало.
Простите. Не знаю закрыта ли тема или нет, но очень хочется разобраться в чем причина ошибки. У меня возникает следующее:
09.09.29 13:45:01 ** — MESSAGE BEGIN —
09.09.29 13:45:01 ** To: nosorog@bk.ru
09.09.29 13:45:01 ** Subject: Hello
09.09.29 13:45:01 **
09.09.29 13:45:01 **
09.09.29 13:45:01 ** Hello!!
09.09.29 13:45:01 ** — MESSAGE END —
09.09.29 13:45:01 ** Authenticating with POP3 server
09.09.29 13:45:10 ** Disconnected.
09.09.29 13:45:10 ** Disconnected.
09.09.29 13:45:10 ** Socket Error # 10060Connection timed out.
Проверил все настройки, перезапустил сервер, но воз и ныне там. Подскажите пожалуйста, если возможно. Спасибо.
Судя по логу. Вы соединились с POP сервером, но сразуже произошло разъединение. Ошибка 10060 часто появляется когда есть проблемы с сервером.
Может попробовать подключиться к другому серверу?
Попробовал Gmail – нифига не FOUND))). Если можно, проверьте мой .ini, листинг прилагаю. Спасибо.
********************************************************
smtp_server=smtp.gmail.com
; smtp port (normally 25)
smtp_port=465
default_domain=www.google.com
auth_username=oll.nick888@gmail.com
auth_password=*****
; if your smtp server uses pop3 before smtp authentication, modify the
; following three lines. do not enable unless it is required.
pop3_server=pop3.gmail.com
pop3_username=oll.nick888@gmail.com
pop3_password=*****
force_sender=oll.nick888@gmail.com
hostname=ssl://smtp.gmail.com
********************************************************
Олег, попробуйте с другой почты (не с mail.ru). Я с ней намучился, но так и не смог донести письма. Как перешел но первый другой мейл, сразу заработало.
Я бы с удовольствием, но, если честно, не знаю, что выбрать. Например попробовал сегодня Rambler – тот-же результат. Сейчас буду пробовать Gmail. О результатах сообщу непременно.
Я сделал архив со своим config.ini, скриптом и инструкцией по установке (вам нужно заменить только логин и пароль).
Специально проверял на mail.ru – все отлично работает.
Понимаете, малейшая ошибка или опечатка в конфиге не дает отправить письмо. Поэтому проверяйте очень внимательно и если используете другие почтовые сервисы очень внимательно читайте их инструкции по подключению.
Здравствуйте.
А если требуется отправка почты от разных пользователей(т.е. запись "From: vova_33@mail.ru" меняется динамически, что прописывать в
auth_username=
auth_password=
Есть ли решение?
Для этого нужна поддержка со стороны сервера. Mail.ru, например, запрещает отправлять почту у которой поле from не соответствует аккаунту, т.е. от имени другого пользователя отправить почту нельзя.
подскажите что делать .появляется окно – ошибка почтовой программы – Не удалось подключиться к POP-серверу. Как можно исправить?
Правильно указать адрес почтового сервера. Кроме того, если используется proxy, то в настройках нужно указать и его адрес.
; 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.etherway.ru
; smtp port (normally 25)
smtp_port=25
; 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=smtp.etherway.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=****@users.etherway.ru;
auth_password=******;
; if your smtp server uses pop3 before smtp authentication, modify the
; following three lines. do not enable unless it is required.
pop3_server=pop.etherway.ru
pop3_username=*****users.etherway.ru;
pop3_password=*********
; 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=
; 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=******users.etherway.ru
всё ли правильно я укозал?
Похоже, что да
Запустите, попробуйте, посмотрите логи.
Кстати, вы зря закомментировали
;debug_logfile=debug.log
Первые несколько писем лучше отправить с включенным дебагом, и убедиться, что все работает правильно. Потом можно отключить.
Здрасте, помогите пожалуйста, уже 3й день подряд сижу и мучаюсь, никак не получается настроить…
Сделал все как в примере.
конфигурация:
XAMMP 2.2.4 beta
sendmail 12 авг 2009
Win XP sp3
стоит брандмауэр но sendmail разрешен выход в инет
файлы конфига:
sendmail.ini (полностью)
[sendmail]
smtp_server=smtp.mail.ru
smtp_port=25
smtp_ssl=auto
default_domain=mail.ru
error_logfile=error.log
debug_logfile=debug.log
auth_username=admin.*****
auth_password=*********
pop3_server=pop.mail.ru
pop3_username=admin.*****@mail.ru
pop3_password=*********
force_sender=admin.******@mail.ru
force_recipient=
hostname=mail.ru
php.ini (секция mail sender)
[mail function]
SMTP =
sendmail_from =
sendmail_path = "D:\xampp\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 =
помогите плииз, уже не могу, мозги кипят, пробовал менять порт на 2525, и вместо smtp писать ip со статьи и который отвечает на пинг. брандмауэр отключал.
Самое главное файлы error.log и debug.log не создаются хоть убей. письма слал с сайта, и галереи, оба пишут ошибку, нельзя послать почту.
1) У вас есть доступ на запись в папку D:\xampp\sendmail\ ?
2) Если error.log и debug.log очень похоже, что sendmail не запускается вообще.
3) В XAMMP один файл php.ini? Я спрашиваю потому что в WAMPSERVER, которым я пользуюсь их 2 (один для работы с apache, второй для работы с консолью), поэтому если внести настройки не в тот файл, то можно очень долго пытаться запустить sendmail
Приветствую!
При выполнении скрипта система выдала следующие сообщения:
Notice: Undefined index: addr in C:\Poligon\my\www\mail.php on line 19
Notice: Undefined index: theme in C:\Poligon\my\www\mail.php on line 20
Notice: Undefined index: text in C:\Poligon\my\www\mail.php on line 21
Вот эти строки:
$addr = $_POST['addr'];
$theme = $_POST['theme'];
$text = $_POST['text'];
Проверьте, вы случайно не изменили строки 26, 30 и 34? Особенно атрибуты name?
Эта ошибка означает, что в массиве $_POST нет элементов addr, theme и text, т.е. форма либо вообще не отправлена, либо ее поля имеют другие имена.
кстати заголовки типа "asdasd" расцениваются сендмеилом как спам и не отправляются
Уточните, пожалуйста, sendmail'ом или почтовым сервером?
Еще один не плохой сайт по теме
Чушь какая-то.
Используем getmxrr + gethosbyname
и прямая сессия на 25 порт
Зачем sendmail? ЗААЧЕЕЕММММ????????
sendmail – чтобы почту отправлять.
Хорошо, открыли порт, что дальше? Отправляем ручками команды SMTP серверу?
А что делать, если такая проблема возникает наоборот, на сервере?
Выдается следующее сообщение:
Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in E:\Rooms\*****\******.ru\www\obr.php on line 5
Попробуйте в самое начало php скрипта добавить строки
ini_set ("SMTP","mail.MyWebSite.com");
ini_set ("sendmail_from","webmaster@MyWebSite.com");
(адрес сервера и email естественно нужно изменить)
Спасибо за статью, но, сразу после установки и настройки mail() начал выдавать ошибку:
Could not execute mail delivery program "c:\bin\sendmail\sendmail.exe"
Немного покопавшись с настройками IIS и правами на NTIFS было выяснено, что для корректной работы необходимо дать разрешение на чтение/исполнение пользовотелю IUSR_## для папки, в которой лежит sendmail.exe, а так же на файл cmd.exe.
Самое смешное, что уровень безопасности самого IIS никак не влияет на возможность запуска cmd.exe.
Интересно, я с IIS практически не работал. Может он запускатся от имени пользователя IUSR_##? Тогда все правильно.
Кто-нибудь может мне помочь у меня в debag-е дает такую ошибку
09/12/18 15:31:04 ** — MESSAGE BEGIN —
09/12/18 15:31:04 ** To: artashesbadalyan@rambler.ru
09/12/18 15:31:04 ** Subject: sdf s
09/12/18 15:31:04 ** From:nssadmin@mail.ru
09/12/18 15:31:05 **
09/12/18 15:31:05 ** sd fsd fsd f
09/12/18 15:31:05 ** — MESSAGE END —
09/12/18 15:31:05 ** Authenticating with POP3 server
09/12/18 15:31:06 ** Connected.
09/12/18 15:31:29 ** Disconnected.
09/12/18 15:31:29 ** Disconnected.
09/12/18 15:31:30 ** Socket Error # 10054Connection reset by peer.
Это означает, что сервер разорвал соединение. Попробуйте подключиться к другому серверу, может это проблемы у рамблера.
Можете еще этот топик почитать.
Настроил тоже самое дома и теперь получаю другую ошибку, не пойму в чем дело, не поможеш?
09.12.19 16:25:12 ** — MESSAGE BEGIN —
09.12.19 16:25:12 ** To: nssweb@mail.ru
09.12.19 16:25:12 ** Subject: hello
09.12.19 16:25:12 ** From: nssweb@mail.ru
09.12.19 16:25:12 **
09.12.19 16:25:12 ** hello
09.12.19 16:25:12 ** — MESSAGE END —
09.12.19 16:25:12 ** Authenticating with POP3 server
09.12.19 16:25:14 ** Disconnected.
09.12.19 16:25:14 ** Disconnected.
09.12.19 16:25:14 ** Socket Error # 11001Host not found.
smtp_server=smtp.mail.ru
smtp_port=25
smtp_ssl=auto
default_domain=mail.ru
error_logfile=error.log
debug_logfile=debug.log
auth_username=nssweb@mail.ru
auth_password=******
pop3_server=pop.mail.ru
pop3_username=nssweb@mail.ru
pop3_password=*******
force_sender=nssweb@mail.ru
force_recipient=
hostname=mail.ru
заранее спасибо
Судя по настройкам, все правильно.
Варианты:
1) не работает mail.ru (или только их smtp сервер)
2) возможно вы заходите через прокси
А что нет способов отправить E-mail, если я вхожу в интернет с помошью прокси
Почему нет? Просто нужно будет указывать в настройках параметры подключения (адрес и порт прокси). Я сам не пробовал, поэтому какие именно настройки изменить подсказать не могу.
Что делать с такой ошибкой интерпретатора php:
Warning: mail() [function.mail]: Filename cannot be empty in C:\xampp\htdocs\programs\121\mailer.php on line 15
Непонятно какое имя файла требует функция mail() . В документации php ничего не нашел по этому поводу.
Все сделал в точности по инструкции по инструкции.
В "debug.log" записывается следующее:
09.12.20 23:06:49 ** — MESSAGE BEGIN —
09.12.20 23:06:49 ** To: mail1@mail.ru
09.12.20 23:06:49 ** Subject: theme
09.12.20 23:06:49 ** From: vova_33@mail.ru
09.12.20 23:06:49 **
09.12.20 23:06:49 ** abcde
09.12.20 23:06:49 ** — MESSAGE END —
09.12.20 23:06:49 ** Authenticating with POP3 server
09.12.20 23:06:50 ** Connected.
09.12.20 23:06:50 << +OK
09.12.20 23:06:50 >> CAPA
09.12.20 23:06:50 << +OK Capability list follows
09.12.20 23:06:50 << TOPUSERLOGIN-DELAY 120PIPELININGEXPIRE NEVERUIDLIMPLEMENTATION Mail.Ru.
09.12.20 23:06:50 >> USER mail2@inbox.ru
09.12.20 23:06:50 << +OK Password required for user ahmetovn@inbox.ru
09.12.20 23:06:50 >> PASS 12345
09.12.20 23:06:50 << +OK mail2@inbox.ru maildrop has 7 messages (20480 octets)
09.12.20 23:06:50 >> QUIT
09.12.20 23:06:50 << +OK POP3 server at inbox.ru signing off
09.12.20 23:06:50 ** Disconnected.
09.12.20 23:06:50 ** Disconnected.
09.12.20 23:06:50 ** Disconnected.
09.12.20 23:06:50 ** Connecting to 194.67.23.113:25
09.12.20 23:07:00 ** Disconnected.
09.12.20 23:07:00 ** Disconnected.
09.12.20 23:07:00 ** Disconnected.
09.12.20 23:07:00 ** Disconnected.
09.12.20 23:07:00 ** Connect timed out.
почитал еще коменты.
в общем vova_33@mail.ru тоже заменл на существующий аккаунт, то есть mail2@inbox.ru
ситуация та же
С ошибкой php не понятно, я такой не видел, и никакого имени файла там быть не должно.
Судя по тому, что у вас запустился sendmail, функция mail отработала нормально.
Судя по записям в логе вы нормально подключились к серверу.
Письмо на mail1@mail.ru пришло?
Владимир а ты случайно не знаеш в каком файле нужно настроить адрес и порт прокси
По-идее в конфиге sendmail. Но я не вижу подходящих настроек в документации. А инструкции в инете в основном для *nix.
Можно попробовать использовать ProxyCap.
скажите в чем может быть проблема. все настройки верны. стоит xampp.
10.01.10 06:09:32 ** — MESSAGE BEGIN —
10.01.10 06:09:32 ** To: serhio.666@gmail.com
10.01.10 06:09:32 ** Subject: asd
10.01.10 06:09:32 ** From: serhio-s@mail.ru
10.01.10 06:09:32 **
10.01.10 06:09:32 ** asd
10.01.10 06:09:32 ** — MESSAGE END —
10.01.10 06:09:32 ** Authenticating with POP3 server
10.01.10 06:09:32 ** Connected.
10.01.10 06:09:32 << +OK
10.01.10 06:09:32 >> CAPA
10.01.10 06:09:32 << +OK Capability list follows
10.01.10 06:09:32 << TOPUSERLOGIN-DELAY 120PIPELININGEXPIRE NEVERUIDLIMPLEMENTATION Mail.Ru.
10.01.10 06:09:32 >> USER serhio-s@mail.ru
10.01.10 06:09:32 << +OK Password required for user serhio-s@mail.ru
10.01.10 06:09:32 >> PASS mypass
10.01.10 06:09:33 << +OK serhio-s@mail.ru maildrop has 1749 messages (225385472 octets)
10.01.10 06:09:33 >> QUIT
10.01.10 06:09:33 << +OK POP3 server at mail.ru signing off
10.01.10 06:09:33 ** Disconnected.
10.01.10 06:09:33 ** Disconnected.
10.01.10 06:09:33 ** Disconnected.
10.01.10 06:09:33 ** Connecting to smtp.mail.ru:25
10.01.10 06:09:43 ** Disconnected.
10.01.10 06:09:43 ** Disconnected.
10.01.10 06:09:43 ** Disconnected.
10.01.10 06:09:43 ** Disconnected.
10.01.10 06:09:43 ** Connect timed out.
О похожей проблеме уже писали, правда я не знаю, удалось ли её решить.
Судя по логу, вы нормально соединились с POP3 сервером, но не смогли соединиться с SMTP.
Это может быть из-за проблем у mail.ru. Можно попробовать подключиться к другому серверу.
Вот такая вот фигня у меня на локальном сервере!
Настройки у почты через корпоративный почтовик
Подскажите где собака зарыта ??
10.01.13 22:39:58 ** — MESSAGE BEGIN —
10.01.13 22:39:58 ** To: jv964@ukr.net
10.01.13 22:39:58 ** Subject: тема
10.01.13 22:39:58 ** X-PHP-Originating-Script: 0:test_mail.php
10.01.13 22:39:58 ** From: y.sharov@sint.ua
10.01.13 22:39:58 **
10.01.13 22:39:58 ** Тело письма
10.01.13 22:39:58 ** — MESSAGE END —
10.01.13 22:39:58 ** Authenticating with POP3 server
10.01.13 22:39:58 ** Connected.
10.01.13 22:39:59 ** Disconnected.
10.01.13 22:39:59 ** Disconnected.
10.01.13 22:39:59 ** Socket Error # 10054Connection reset by peer.
Эта ошибка может возникать по разным причинам. Означает, что сервер сбросил соединение. Подробнее почитать можно здесь.
Спасибо автору, все работает.
У кого не работает – у тех реально руки из **** растут
Совет тем у кого не работает: просто делайте как написано + читайте там где майл-отправитель регите какие настройки надо прописать.
Например на рамблере:
; 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=mail.rambler.ru
; 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=rambler.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=aoci
auth_password=XtvDfeS1
; if your smtp server uses pop3 before smtp authentication, modify the
; following three lines. do not enable unless it is required.
pop3_server=mail.rambler.ru
pop3_username=aoci
pop3_password=XtvDfeS1 ;даже не пробуйте я выдумал
; 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=aoci@rambler.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=rambler.ru
Не нужно никого обежать. Часто проблемы не связаны непосредственно с настройкой sendmail и, не имея опыта их поиска, можно потратить очень много времени.
Владимир, помогите, пожалуйста, разобраться.
В "debug.log" записывается следующее:
10.01.16 08:32:47 ** — MESSAGE BEGIN —
10.01.16 08:32:47 ** To: peli21can@gmail.com
10.01.16 08:32:47 ** Subject: the subject
10.01.16 08:32:47 ** From:tashkent34@mail.ru
10.01.16 08:32:47 **
10.01.16 08:32:47 **
10.01.16 08:32:47 ** xxxxxx
10.01.16 08:32:47 ** — MESSAGE END —
10.01.16 08:32:47 ** Authenticating with POP3 server
10.01.16 08:32:47 ** Connected.
10.01.16 08:33:08 ** Disconnected.
10.01.16 08:33:08 ** Disconnected.
10.01.16 08:33:08 ** Disconnected.
10.01.16 08:33:08 ** Connection Closed Gracefully.
Спасибо.
К POP3 серверу вы подключились, а затем сразуже отключились (или он вас отключил). Убедитесь что переписали правильно все настройки.
Все заработало после удаления коментариев
Автору +5
Большое всем спасибо за помощь, особенно автору! Я долго мучался, ничего не получалось и когда совсем отчаялся меня спасла вот эта конфигурация (для mail.ru)
—————
В php.ini
—————
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP =
; http://php.net/smtp-port
smtp_port = 25
; For Win32 only.
; http://php.net/sendmail-from
sendmail_from =
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"
/*ниже без изменений*/
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =
—————-
В sendmail.ini
"auth_username & pop3_username" -имена ящиков С КОТОРЫХ отправляется почта, адрес НА КОТОРЫЙ отправляете письмо Вы указываете в РНР-скрипте в Вашем файле!
—————-
smtp_server=smtp.mail.ru
smtp_port=587
smtp_ssl=auto
default_domain=mail.ru
error_logfile=error.log
auth_username=name /*имя Вашего ящика без @mail*/
auth_password=pass /*Пароль вашего ящика*/
pop3_server=pop.mail.ru
pop3_username=name /*имя Вашего ящика без @mail*/
pop3_password=pass /*Пароль вашего ящика*/
force_sender=name@mail.ru
force_recipient=
hostname=mail.ru
—————–
У меня это работает, письма моментально приходят на яндекс!
Всем удачи!!!
Доброго времени суток! Владимир, спасибо огромное за статью! У меня возникла следующая проблема: настроил все как показано выше, php скрипт вынес в отдельный файл, при запуске пишет ошибку
Parse error: syntax error, unexpected ';' in C:\wamp\www\mailer.php on line 5
в чем может быть проблема? заранее спасибо.
Вы копировали скрипт из статьи?
Если да, нужно исправить кавычки на обычные – прямые. Их WordPress изменяет при публикации.
Будут проблемы, пишите, я вышлю скрипт.
Боюсь кавычки не помогут.. У меня еще более простой скрипт который вызываю из Flex приложения, пишет немного другую ошибку:
Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\wamp\www\send.php on line 3
Error
Вот сам скрипт:
Все же попробовал пометь кавычки непомогло(
Целый день уже бьюсь, ни в какую..(
Обещанный скрипт))
$mailto = 'моя_почта';
mail($mailto, 'Test', 'Hello') or die('Error');
echo 'CheckMessege';
Все мой скрипт заработал) я как абсолютно незнающий php не знал что ; – это закоментированно, осталось лишь раскоментировать sendmail_path = "C:\wamp\sendMail\sendmail.exe -t"
Статья супер, спасибо!
Поздравляю!
Только уточню. В PHP комментарий обозначается так // или так
/* */
; – это комментарий в конфигах apache
подскажите,пожалуйста.У меня в error.log такая ошибка
Socket Error # 10061Connection refused.
Что ето значит??
Это значит, что сервер не хочет с вами соединяться. Причины могут быть разные, поэтому попробуйте просто подключится к другому серверу. И еще раз проверьте все параметры.
Писем действительно 32, рекомендациями из следующего поста пробовала воспользоваться – не помогло.
В прошлом комментарии я ошибся. POP3 серверу действительно должна быть отправлена команда QUIT. Ошибка возникает после подключения к SMTP.
Вот мой лог, начиная с подключения к SMTP
08.08.20 19:33:30 ** Connecting to smtp.mail.ru:25
08.08.20 19:33:31 ** Connected.
08.08.20 19:33:31 << 220 proline.net.ua, ESMTP EXIM 4.67<EOL>
08.08.20 19:33:31 >> EHLO mail.ru<EOL>
08.08.20 19:33:31 << 250-proline.net.ua Hello mail.ru [80.93.122.16]<EOL>250-SIZE 31457280<EOL>250-PIPELINING<EOL>250-STARTTLS<EOL>250 HELP<EOL>
08.08.20 19:33:31 ** Authenticating as adres@mail.ru
08.08.20 19:33:31 >> MAIL FROM: <adres@mail.ru><EOL>
08.08.20 19:33:31 << 250 OK<EOL>
08.08.20 19:33:31 >> RCPT TO: <adres@ukr.net><EOL>
08.08.20 19:33:31 << 250 Accepted<EOL>
08.08.20 19:33:31 >> DATA<EOL>
08.08.20 19:33:31 << 354 Enter message, ending with "." on a line by itself<EOL>
08.08.20 19:33:31 >> Date: Wed, 20 Aug 2008 19:33:31 +0300<EOL>
08.08.20 19:33:31 >> To: adres@ukr.net<EOL>
08.08.20 19:33:31 >> Subject: test<EOL>
08.08.20 19:33:31 >> From: adres@mail.ru<EOL>
08.08.20 19:33:31 >> <EOL>
08.08.20 19:33:31 >> test test test<EOL>
08.08.20 19:33:31 >> .<EOL>
08.08.20 19:33:38 << 250 OK id=1KVqbL-000JIi-3R<EOL>
08.08.20 19:33:38 >> QUIT<EOL>
08.08.20 19:33:38 << 221 proline.net.ua closing connection<EOL>
08.08.20 19:33:38 ** Disconnected.
08.08.20 19:33:38 ** Disconnected.
08.08.20 19:33:38 ** Disconnected.
Честно говоря, не ясно в чем ошибка. Т.е. описание ошибки есть (Connect timed out. – Превышено время ожидания соединения), но из-за чего она возникает – не ясно.
В большинстве случаев это означает либо проблемы со связью, либо проблемы с настройками. Но в данном случае первая причина отпадает сразу (вы бы не соединились с POP сервером), вторая, судя по логу, тоже (конечно, стоит проверить настройки еще раз).
Может быть не отвечает сервер mail.ru, но сегодня я проверял – все работало.
В общем, попробуйте использовать другой smtp.
У меня было то же самое
Проверил порт SMTP: в Outlook'е стоял порт 2525, а в sendmail.ini : 25
заменил 25 на 2525, перезапустил сервер и все пошло.
Большое спасибо автору статьи.