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 разработка
Комментарии (84)
Вы можете отслеживать обсуждение записи с помощью 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 и сервер, естественно, отключается.
Писем действительно 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, перезапустил сервер и все пошло.
Большое спасибо автору статьи.
Рекомендации от команды 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. Очень похоже, что ваши настройки не применяются вообще.
[...] Сегодня я буду порассказать вам самый простой способ поднять бабла - rav4click.ru Конкурс: бесплатная баннерная реклама для блоггеров. PHP mail под Windows. Отправка почты из PHP скриптов. [...]
Здравствуйте! Мучался целый день, такая же проблема как и здесь была у людей, но решения никто не нашел. Я упорный, но не настолько, уже копать незнаю где.
Настроил 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
[...] на блогах:PHP mail под Windows. Отправка почты из PHP скриптовКак создать облако тегов для своего сайта на [...]
ошибка, пожалуйста помогите.
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. Проблем с ним не было, правда и нагрузка была совсем небольшая.