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

30 мая, 2008

PHP mail картинка с конвертом

В этой статье я хочу рассказать об отправке почты из 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 сервер, чтобы изменения вступили в силу.

Чтобы протестировать работу почты напишем простенький скрипт:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>Simple Mail</title>
  7. </head>
  8. <body>
  9. <?php
  10. $addr = $_POST['addr'];
  11. $theme = $_POST['theme'];
  12. $text = $_POST['text'];
  13. if (isset($addr) &amp;&amp; isset($theme) &amp;&amp; isset($text)
  14.         &amp;&amp; $addr != "" &amp;&amp; $theme != "" &amp;&amp; $text != "") {
  15.     if (mail($addr, $theme, $text, "From: vova_33@mail.ru")) {
  16.         echo "<h3>Сообщение отправлено</h3>";
  17.     }
  18.     else {
  19.         echo "<h3>При отправке сообщения возникла ошибка</h3>";
  20.     }
  21. }
  22. ?>
  23. <form action="mailer.php" method="post">
  24. <p>
  25.     <label for="addr">eMail:</label>
  26.     <input type="text" name="addr" id="addr" size="30" />
  27. </p>
  28. <p>
  29.     <label for="theme">Тема письма:</label>
  30.     <input type="text" name="theme" id="theme" size="30" />
  31. </p>
  32. <p>
  33.     <label for="text">Текст письма:</label>
  34.     <textarea rows="10" cols="20" name="text" id="text"></textarea>
  35. </p>
  36. <p>
  37.     <input type="submit" value="Отправить" />
  38. </p>
  39. </form>
  40. </body>
  41. </html>

Он создает форму с тремя полями для ввода адреса, темы и содержания письма. Нажатие на кнопку «Отправить» отправит запрос этому же скрипту (строка 23).

Если данные введены, то будет вызвана функция mail (строка 15), которая и отправит письмо. В случае успешной отправки функция возвращает true, в противном случае – false.

Как видите, ничего сложного в настойке почты нет.

Удачи!

Понравилась статья? Подписывайтесь на продолжение rss link !

Или на мой твиттер twitter link

]]>

Добавьте эту страницу в google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

]]>

Опубликовано в PHP, Web разработка Комментарии (215) »

]]>

Комментарии (215)

Вы можете отслеживать обсуждение записи с помощью RSS 2.0 rss link

Вы также можете оставить комментарий, или трекбек с Вашего сайта.

]]>
  1. В состав Денвера входит заглушка для sendmail, которая складывает письма в виде отдельных файлов во временную папку

  2. JocK

    Це загальновідомий факт, але ж далеко не всі користуються даним пакетом

  3. Николай Испанюк, В Denwer-3 Apache2, PHP5, MySQL5.

  4. Денверовская заглушка — просто прелесть.
    А если "все-таки нужно отправить почту" — то настраиваю smtp провайдера и отправляю. И все :)

  5. не когда не получалось настроить и сейчас не вышло….. руки из каки растут наверное =(

    • Что именно не вышло? Если дадите описание ошибок, может быть смогу что-то конкретное посоветовать

      • Anton

        Владимир! Помогите с ошибкой. Parse error: parse error, unexpected ';' in C:\server\root\sendmail.php on line 13. В вашем скрипте! В PHP не розбираюсь, поэтому не знаю какая именно там ему ; не нравиться! Зарание благодарен!

        • Это я пропустил. Просто замените все &amp; на &.
          Т.е. &amp;&amp; нужно заменить на &&
          Если не получится я вышлю вам скрипт почтой

  6. Vladimir

    Автору нобелевскую премию или суперприз!!!
    Я пол года назад до этой статьи мля 2 дня убил, но так толком и не смог отправить почту и забросил на .. всё это дело, и только сегодня случайно наткнулся на данный шедевр- в итоге результат: 5 мин. настройки php.ini, sendmail.ini почта отправилась по php-функции mail()и дошла до адресата за 1 мин.
    Громадное спасибо тебе добрый человек!!!
    Я счастлив!!!!!!!!!!
    Здоровья, счастья тебе!!!!!!!!!

  7. Vladimir

    Автор -ты супер!!!
    Так держать!!!
    MEGA THANK YOU!!!

  8. Спасибо за совет, очень помог.
    Кстати, у меня к денверу тоже неприязнь

  9. спасибо огромное за статью. долго морочил голову с отправкой писем. в результате так просто все решилось

  10. AlexZ

    Дружище, ну просто громаднейшая тебе благодарность, выручил! :)

  11. Fascist

    XAMPP получше Денвера будет.

  12. root

    У меня пример не работает, в 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, перезапустил сервер и все пошло.

      Большое спасибо автору статьи.

  13. Alice

    А у меня так и не заработало..ошибка: 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?

  14. 2Alice

    Добавьте в php.ini параметр
    sendmail_path = “C:\wamp\sendmail\sendmail.exe -t”

    (Нужно указать папку в которую вы распаковали sendmail). Файлы debug.log и error.log будут находится в этой же папке, но созданы они будут только при возникновении ошибок или записи отладочной информации.

    Кстати, каждый параметр должен быть записан с новой строки (в вашем комментарии имя и пароль – в одной строке).

    Попробуйте, не получится – пишите.
    P.S. Не забудьте перезапустить сервер после изменения php.ini

  15. Genadi

    У меня пишет что типа отправленно но письмо не пришодит ((

  16. Выполнил всё по данной рекомендации, написало, что сообщение отправлено, на получатель оно не доходит-debug.log

    08.08.16 14:08:38 ** — MESSAGE BEGIN —
    08.08.16 14:08:38 ** To: vvtivv@mail.ru
    08.08.16 14:08:38 ** Subject: Test
    08.08.16 14:08:38 ** From: hi-tec-lab@yandex.ru
    08.08.16 14:08:38 **
    08.08.16 14:08:38 ** Test Проверка отсылки письма!
    08.08.16 14:08:38 ** 12345678910
    08.08.16 14:08:38 ** ===================
    08.08.16 14:08:38 ** — MESSAGE END —
    08.08.16 14:08:38 ** Authenticating with POP3 server
    08.08.16 14:08:41 ** Connected.
    08.08.16 14:08:41 << +OK POP Ya! v1.0na
    08.08.16 14:08:41 >> CAPA
    08.08.16 14:08:41 << -ERR What?//Это место Не понятно???
    08.08.16 14:08:41 >> USER hi-tec-lab@yandex.ru
    08.08.16 14:08:41 << +OK password, please.
    08.08.16 14:08:41 >> PASS (My PAss)
    08.08.16 14:08:41 << +OK 0 message(s) 0 bytes.
    08.08.16 14:08:41 >> QUIT
    08.08.16 14:08:41 << +OK shutting down.
    08.08.16 14:08:41 ** Disconnected.
    08.08.16 14:08:41 ** Disconnected.
    08.08.16 14:08:41 ** Disconnected.
    08.08.16 14:08:41 ** Connecting to smtp.yandex.ru:25
    08.08.16 14:08:51 ** Disconnected.
    08.08.16 14:09:02 ** Disconnected.
    08.08.16 14:09:02 ** Disconnected.
    08.08.16 14:09:02 ** Disconnected.
    08.08.16 14:09:02 ** Connect timed out.

    • CAPA – это команда по которой сервер должен вернуть список поддерживаемых им функций.
      В данном случае он возвращает ошибку (-ERR).

      Насколько я знаю, поддержку этой команды можно отключить в настройках сервера.

      Как заставить sendmail не отправлять эту команду я не знаю.
      Поэтому проще всего изменить сервер. Я проверял с mail.ru.

  17. Анна

    Что-то не срабатывает, может ли это быть из-за особенности настройки прокси сервера?
    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 и сервер, естественно, отключается.

  18. Рекомендации от команды 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

  19. защита от спама иногда почту принимает с n_ного раза, из очереди, таким образом происходит борьба с почтовыми прогами спамеров, которые шуруют в 5 потоков по 100шт в минуту(в среднем)

  20. Обязательно нужен отличный(другой)вариант от sendmail,
    только,где его взять для собственного хостинга,
    на прова надеятся нет смысла,там свои проблемы.
    Пробую пользовать бесплатный CourierMS 1.53…
    скажем так себе, хотя версии современнее многообещающие,
    триал, типа на 3 пользователя, даже с одним не работают
    во внешке…а покупать, конечно можно и приобрести,
    только для чего, ради отсылки писем, проще предоставить
    пользователю регистрацию без проверки email, последнее
    мне самому не очень нравится(мысли вслух)

  21. Jenya

    Помогите плиз!!
    Всёравно вылазит ошибка:
    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. Очень похоже, что ваши настройки не применяются вообще.

  22. Иван

    Здравствуйте! Мучался целый день, такая же проблема как и здесь была у людей, но решения никто не нашел. Я упорный, но не настолько, уже копать незнаю где.

    Настроил 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) почту отправляют?

  23. Иван

    Интернет на прямую, никаких прокси!
    При попытке подключится по 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 пришли ко мне. Первый раз такое, что то наверное с настройками, только чего именно…

  24. Иван

    Поставил галочку "Проверка подлинности", почта стала отправляться. Теперь как эту авторизацию настроить в sendmail? Я все делал так как написано тут у вас, но почта не ходит (((

  25. Иван

    Ура я решил проблему.

    вот тут:

    auth_username=my@mail.ru
    нужно писать вот таак
    auth_username=my
    т.е. просто указать логин.

    Всем спасибо!

  26. Мои поздравления :-)
    Похоже в настройках сервера mail.ru произошли изменения. Когда я тестировал скрипт, настройки были именно такие как я привел в статье (я их просто скопипастил).
    Но вообще ваш вариант правильнее. username – это имя пользователя (my), а не адрес email (my@mail.ru).

    • Иван

      На самом деле я это сделал на работе и все работало. пришел домой и опять не работает, я выпал в осадок!
      Оказывается мой провайдер akado.ru вообще закрыл доступ к любим сервакам по smtp : 25. В тек поддержке мне сказали юзайте mail.akado.ru.
      Для чего они это сделали не понятно. Создал ящик на акадо все ходит ) Прошу прощения всех кого ввел в заблуждения! Всем спасибо.

  27. Владимир

    Здравствуйте, решил отправить сообщение через mail(). Ничего не получалось пока не наткнулся на эту статью. Потом настроил всё это, получилось. Пишет "Сообщение отправлено". Но куда не пытаюсь отправить сообщение, оно не приходит и всё.
    З.Ы. && заменил на &&. Скрипт вроде норм :)

  28. Владимир

    А вот и лог.

    ########################################
    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.
    ###########################################

  29. Polina

    ошибка, пожалуйста помогите.

    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

  30. Oleg

    Возможно, скрипт (который выше представлен) Вы разместили на Вашем сервере НЕ в /rassylka/mailer.php ! В общем если так, то или переименуйте Ваш скрипт в mailer.php или замените в нём form action="sendmail.php" на название вашего скрипта.

  31. Oleg

    Упс… А редактировать нельзя, как я понял…
    В общем надо было так:

    или замените в нём form action="mailer.php" на название вашего скрипта.

  32. Oleg

    Что-то тоже мои письма не доходят… Не пойму. Уж как только не крутил настройки, перезапуская каждый раз 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 не запускается вообще.

      • Oleg

        Да, ну это понятно, конечно, что 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\ вполне подойдет ;)

  33. Polina

    спасибо, разобралась)) только сам метод mail не отправляет: возвращает false в чем может быть причина?

  34. Polina

    Проверила, усе так, но "При отправке сообщения возникла ошибка"
    1) отсутствуют права на запись в папку с логами; – a как это проверить?
    заранее спасибо

    • Тогда, скорее всего, права на запись у вас есть :-) Если вы сами можете создать файл в папке с sendmail, то точно есть.

      Проверьте еще раз настройки в php.ini и sendmail.ini. Если ошибки не найдете присылайте мне эти два файла и ваш скрипт почтой (vova_33[at]gala.net).

  35. Oleg

    Ура! В другой папке (без пробелов) – заработало! :)

  36. Polina

    Народ, что может сие означать?
    08/11/04 13:04:18 ** Disconnected.
    08/11/04 13:04:18 ** sender address must match authenticated user

  37. Polina

    ага разобралась, когда меняла с gmail на mail в sendmail.ini не везде ящик поменяла))

  38. Круто! Все получилось!

  39. Помогите пожалоста подключить 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 никак

  40. был бы очень благодарен за пример файла с работающими настройками

  41. Если я не ошибаюсь, сейчас к smtp серверу gmail подключиться нельзя.
    Попробуйте другой сервер.

  42. Значит невозможно. А Вы (Владимир) говорите сейчас – значит это временно?
    Мне тут расказивали в хостподдержке об использовании pop3s в гугле. говорили вот так:
    Цитата – "Скорее всего, тот сендмейл, о котором вы пишете не поддерживает соединение через ssl, а gmail требует ssl."

    Тоесть возможно есть другие новее версии даной програмы что поддерживают ssl.

    Вы говорите временно – я просто не понял рамок – это было раньше но сейчас нет???.. Пожалоста скажите точнее.

    • Я имел ввиду, что раньше работало, а сейчас они отключили. Дело в том, что сам я не пробовал подключаться. Просто видел старый топик на каком-то форуме. Там было описание настроек и через несколько месяцев комментарий, что тема (работа с smtp) уже не актуальна.

      POP3 у них работает однозначно, но он предназначен для получения почты, т.е. вы можете настроить Outlook, The Bat! и т.п. софт для получения почты без входа на сайт.

      Для отправки почты нужен доступ к SMTP серверу.

      Насчет ssl я не уверен, по-моему в настройках gmail его можно отключить.

      В любом случае не вижу смысла возиться. Описанный здесь вариант отправки писем хорошо подходит для тестирования приложений, а тут без разницы какой почтовый ящик использовать (mail.ru или gmail). В рабочем варианте отправка будет скорее всего через SMTP сервер хостера или ваш собственный.

  43. да в том и дело что я начинающий хостер – настроил сервак нормально а почта галимая – стандартная виндовская – не на все ищвесные почтовики доходит – на gmail, mail.ru, bigmir доходит на ukr.net например никак. Но всеравно огромное спасиба вам за ответ и за статью.

    Кстати а вы не знаете как правильно подключить к виндовской почте… windows server 2003
    буду очень благодарен за ответ или ссылку на него.

    • как правильно подключить к виндовской почте…

      Честно говоря, нет. Один раз настраивал почтовый сервер под Win2003, но это был Kerio Mail Server. Проблем с ним не было, правда и нагрузка была совсем небольшая.

  44. Владимир, ты не прав, статья как раз к стати и актуальна. Я настроил как описано и все работает, главное ребята кто работает через какие прокси, или еще что порты открывайте 25, и т д. , а тебе Владимир скажу, не в води людей в заблуждение, тебе срочно нужно нагнать свои знания в программирование.

    • Я не очень понял о какой именно статье идет речь. Если об этой, то не понимаю как я мог написать, что моя же статья не актуальна?
      Если о подключении к gmail, то я честно написал, что "сам подключаться к нему не пробовал, а видел топик на каком-то форуме".
      И не ясно какое отношение имеет программирование к настройке почты. Это скорее администрирование ;)

  45. Ct2Sik

    Господа помогите плиз, не могу понять в чем косяк… при отправки все уходит нормально, НО если в $theme = $_POST['theme'] тема написано русскими символами, то получателю пишется тоесть он не создает тему, а вот если в латинице то тема появляеться. почему?

  46. Ct2Sik

    Господа помогите плиз, не могу понять в чем косяк… при отправки все уходит нормально, НО если в $theme = $_POST['theme'] тема написано русскими символами, то получателю пишется тоесть он не создает тему, а вот если в латинице то тема появляеться. почему?

    забыл дописать…

    ОС Linux, PHP5, отправка через POSTFIX

    • А какая кодировка страницы?
      Можно попробовать использовать функцию mb_convert_encoding, только нужно знать что во что перекодировать.
      Попробуйте как минимум отправить русский текст в utf-8 и windows-1251.

  47. Ваня

    Уважаемый Владимир. Сделал всё по вашей статье (скрипт правда взял свой) всё заработало! Спасибо огромное!
    Но. У меня в скрипте так же имеется поле "адрес отправителя". Пока я не забил туда свой собственный адрес – письмо отправить не мог.
    Внимание, вопрос. Как сделать, чтобы письмо приходило от того, кто форму заполнил (и своё мыло забил)? Есть ли "шаровые" smtp и pop, не требующие авторизации? Или может вы знаете другие решения?
    Заранее благодарю.

    • Смотрите строку 15, вызов функции mail, четвертый параметр. В нём указывается адрес отправителя. Я использовал скрипт только для отладки, поэтому жестко прописал свой адрес.

      "шаровые" smtp и pop, не требующие авторизации

      Никогда о таких не слышал. "Шаровые" есть (тотже mail.ru), а вот "не требующие авторизации" – таких не знаю.

  48. Ваня

    Владимир, еще один момент. В логах 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

  49. Trader

    У меня нету ошибок, но и "Сообщение отправлено" тоже нету? Помогите! Буду заранее благодарен.

  50. Oleg

    Здравствуйте ещё раз!!!
    Вроде некоторое время всё работало, но потом вдруг перестало. В папке с программой sendmail появилось несколько новых файлов – crash.txt, crash-2.txt и т.д. Что ему надо я не пойму… Может Вы знаете? Файлы в архиве:
    http://ifolder.ru/10680006

    • Насколько я понял основная ошибка – Cannot connect to POP server (невозможно подключиться к POP серверу).

      Если раньше отправка работала и вы не изменяли настройки, то возможны такие варианты:
      1) у вас пропала связь или вы установили файервол, кото (как проверить, думаю, вы сами разберетесь);
      2) POP сервер стал недоступен (подождать пока заработает или использовать другой);
      3) проблемы с web сервером или PHP (обычно исправляется рестартом, если, конечно, настройки не изменялись).

  51. Варя

    Здравствуйте, я проверяю форму по отправке почты на локальном сервере. При отправлении данных формы пишет, что сообщение отправлено, а в файле 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 в этой строке указываестя адрес сервера к которому вы подключаетесь.

  52. vesna

    Здравствуйте, я проверяю форму по отправке почты. При отправлении данных пишет, что сообщение отправлено,однако до адресата письмо не доходит. файл 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.
    Может быть подскажите в чем причина, заранее спасибо

  53. Влад

    Здравствуйте Владимир! Помогите мне пожалуйста настроить работу почттовых скриптов на денвере-3!!! Напишите пошагово что нужно сделать! Зарание огромное спасибо!

  54. Владислав

    Здравствуйте Владимир! Помогите мне пожалуйста настроить работу почтовых скриптов на Денвере-3!!! Напишите пошагово что нужно сделать! Заранее огромное спасибо!

    • Здравствуйте, я не работал с денвером-3, поэтому пошаговой инструкции я не напишу.
      Но принцип остается тем же самым. Вам нужно установить sendmail, внести изменения в php.ini (они подробно расписаны в статье) и настроить конфиг sendmail (тоже пример настроек показан).

  55. Владислав

    скажите а что обозначает:

    You don't have permission to access /< on this server.?

    • Что у вас нет доступа к папке в которую вы пытаетесь зайти. Кстати, угловых скобок в адресе быть не должно.
      Появление такого сообщения зависит от настроек сервера. Попробуйте добавить в корень сайта (адрес /) файл index.html с какой-нибудь страницей.

  56. Владислав

    скажите а что обозначает:

    You don't have permission to access /< on this server.?

  57. ЯмАеЦ

    Подскажите как настроить 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"?..

        • Oleg

          Скажите, а надо ли на localhost в pop3_server писать "pop.localhost" или все-таки просто "localhost"?..

          ЯмАеЦ
          localhost??? А у Вас установлен почтовый сервер? Я насколько понимаю, sendmail в общем-то предназначена для того, чтобы с чужих почтовых серверов (того же mail.ru или yandex.ru) письма отправлять… А если у Вас действительно свой почтовый сервер – тогда мне кажется, Вам и sendmail не нужен…?

        • 2ЯмАеЦ
          В предыдущих комментариях вы писали, что пытались подключиться к яндексу. Значит и указывать нужно адрес smtp сервера яндекса.

          Oleg абсолютно прав. localhost указывает на ваш компьютер, а значит на нем должен быть установлен smtp сервер. И в этом случае sendmail вам не нужен. Вы можете в php.ini указать вашего адрес smtp сервера и скрипты будут работать с ним напрямую.
          Насколько я знаю, этот вариант более производительный чем отправка через sendmail, но и с настройки сложнее.

  58. Ксения

    Отличная статья! Просто 5+!
    Только она и помогла мне настроить почту.
    Поставила настройки как указано и все сразу пошло. Большое спасибо!

  59. нужна помощь помогите плиз срочно даже платно согласен((((

  60. Юра

    Подскажите, почему не отправляется. В 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) если есть файервол, отключите.

      • walkingmoscow

        У меня почта не отправлялась через mail.ru, пока я в их помощи не вычитал, что поле From должно совпадать с именем ящика.

        Т.е. "From: vova_33@mail.ru" не прокатывает :)

        • Точно, я забыл об этом написать. Просто предполагается, что у вас возможностей не больше чем при работе через обычный интерфейс.

  61. walkingmoscow

    if (isset($addr) && isset($theme)

    очень неудобный пример :) && вместо && было бы кстати :)

    • walkingmoscow

      if (isset($addr) & amp; & amp; isset($theme)

      очень неудобный пример :) '&&' вместо '& amp; & amp;' было бы кстати :)

      и комменты тут неправильно сохраняются, напишите '& amp;' без пробела – потом виден только один значок…

      а так, спасибо за статью, помогла.

  62. Юра

    Ура! Заработало!
    Вместо smtp_port=25 поставил 587 для mail.ru

    Спасибо огромное!

  63. Александер

    Отправить письмо

    Имя:
    E-mail:
    Тема:
    Сообщение:

    Уважаемый Владимир скрипт нормально работает но при размещении на хосте отправки сообщений нет просит прописать путь к sendmail.
    Подскажите где в скрипте правильно прописать путь к sendmail пробовал разные варианты результат нулевой.

  64. Александер

    Уважаемый Владимир скрипт нормально работает но при размещении на хосте отправки сообщений нет просит прописать путь к sendmail.
    Подскажите где в скрипте правильно прописать путь к sendmail пробовал разные варианты результат нулевой.

    • Путь к sendmail должен быть прописан не в скрипте, а в php.ini.
      Если доступа к php.ini у вас нет, то попробуйте в начале скрипта добавить:
      ini_set(PHP_INI_SYSTEM, "путь_к_sendmail")
      Учтите, что хостер может запретить использование ini_set.
      Размещение sendmail узнать можно у хостера. Или посмотреть в панели управления хостингом.

  65. Олег

    у меня вот такая проблема, все сделал по тексту. (

    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 не позволит вам отправить письмо с обратным адресом, не совпадающим с адресом вашего аккаунта).

  66. Целый день перекопошил интернет в поисках более менее нормального описания отправки почты, и только у вас с трудом но получилось.
    Спасибо! =)

    Хотя с mail.ru так и не получилось. перепробовал все, но никак. Но поменял на другой хост и сразу сработало. Еще раз спасибо! =)

    • Кстати, есть ли какой-то способ пройти через прокси сервер (например на работе)?

      • По-моему, можно, но я не пробовал. Если в настройках не найдете, есть программа ProxyCap используется для туннелирования данных через прокси. Т.е. sendmail отправляет данные как обычно, ProxyCap перехватывает их и перенаправляет через прокси.

  67. Евгений

    У меня вот такая ошибка постоянно вылазит, помогите что с эти м сделать надо???
    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.

  68. Павел

    Сделал все по инструкции:

    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() срабатывает корректно. И почта не доходит до получателя.

    В чем может быть проблема?

  69. Максим

    Здравствуйте, Владимир!

    Подскажите пожалуйста, описанный Вами пример предполагает наличие Mail агента у пользователя или нет?

    Могу я в качестве "From: vova_33@mail.ru" указать вообще не существующий e-mail или это должен быть динамический параметр, если форму заполняют разные пользователи? Т.е. идея у меня какая: пользователь заполняет форму, а я ее получаю как e-mail при этом все заполненные формы должны приходить с одного адреса.

    Подскажите пожалуйста!

    • Mail агент пользователю не нужен.
      Нужно зарегистрироваться на почтовом сервере, который поддерживает SMTP (тот же mail.ru) и в настройках sendmail указать ваши параметры подключения. Все письма будут приходить вам именно с этого ящика.
      Использовать в поле From не существующий e-mail нельзя, т.к. mail.ru не даст вам отправить такое письмо. В поле From должен быть указан ящик, который вы зарегистрировали.

      Т.е. в вашем случае нужно 2 ящика: 1 для отправки писем, на 2-ой вы будете их получать.

  70. vitiv

    Ребята сколько можно елозить mail.ru
    Стандартные настройки после регистрации
    на gmail.com , а именно:
    smtp.gmail.com
    port: 465
    login: pupkin@gmail.com
    password: qwerty
    Безопасное соединение SMTPSSL
    ————————————————————–
    p/s как альтернатива для отправки писем регистрации и восстановления паролей для движков…:)

  71. Андрей

    А как настроить php.ini так, чтобы письма отправлялись с локального компьютера и приходили на локальный компьютер? У меня стоит SMTP-сервер на локальном. Через Outlook Express я спокойно отправляю и получаю письма на виртуальные адреса.

  72. zurito

    У меня для gmail работает на таких параметрах:


    define('HOSTNAME', 'ssl://smtp.gmail.com');
    define('PORTNUMBER', 465);
    define('EMAILACCOUNT', 'account_name@gmail.com');//!!! с доменом
    define('ACC_PASS', 'password');

    p.s. работает с пакетом phpmailer

  73. Александр

    Владимир, спасибо вам огромное! Использовал свой скрипт, работает идеально, вот правда только подглючивает что-то. Очень благодарен за статью!
    Удачи во всех ваших начинаниях!

  74. Супер!!! Респект и уважуха всего на 3 мин работы и все работает

  75. Vad

    Владимир, большое спасибо за статью!
    Только проверочный скрипт сработал лишь после того, как я вынес PHP-код в отдельный файл mailer.php, иначе не работало. :)

  76. Олег

    Простите. Не знаю закрыта ли тема или нет, но очень хочется разобраться в чем причина ошибки. У меня возникает следующее:
    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 часто появляется когда есть проблемы с сервером.
      Может попробовать подключиться к другому серверу?

      • Oleg

        Попробовал 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

        ********************************************************

    • Cibron Nethis

      Олег, попробуйте с другой почты (не с mail.ru). Я с ней намучился, но так и не смог донести письма. Как перешел но первый другой мейл, сразу заработало.

      • Oleg

        Я бы с удовольствием, но, если честно, не знаю, что выбрать. Например попробовал сегодня Rambler – тот-же результат. Сейчас буду пробовать Gmail. О результатах сообщу непременно.

        • Я сделал архив со своим config.ini, скриптом и инструкцией по установке (вам нужно заменить только логин и пароль).

          Специально проверял на mail.ru – все отлично работает.
          Понимаете, малейшая ошибка или опечатка в конфиге не дает отправить письмо. Поэтому проверяйте очень внимательно и если используете другие почтовые сервисы очень внимательно читайте их инструкции по подключению.

  77. Юрий

    Здравствуйте.
    А если требуется отправка почты от разных пользователей(т.е. запись "From: vova_33@mail.ru" меняется динамически, что прописывать в
    auth_username=
    auth_password=
    Есть ли решение?

    • Для этого нужна поддержка со стороны сервера. Mail.ru, например, запрещает отправлять почту у которой поле from не соответствует аккаунту, т.е. от имени другого пользователя отправить почту нельзя.

  78. Иван

    подскажите что делать .появляется окно – ошибка почтовой программы – Не удалось подключиться к POP-серверу. Как можно исправить?

  79. Денис

    ; 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
      Первые несколько писем лучше отправить с включенным дебагом, и убедиться, что все работает правильно. Потом можно отключить.

  80. ASUS

    Здрасте, помогите пожалуйста, уже 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 ;)

  81. Maxim

    Приветствую!
    При выполнении скрипта система выдала следующие сообщения:
    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, т.е. форма либо вообще не отправлена, либо ее поля имеют другие имена.

  82. asdas

    кстати заголовки типа "asdasd" расцениваются сендмеилом как спам и не отправляются

  83. Еще один не плохой сайт по теме

  84. алекс

    Чушь какая-то.
    Используем getmxrr + gethosbyname
    и прямая сессия на 25 порт
    Зачем sendmail? ЗААЧЕЕЕММММ????????

  85. Юрий

    А что делать, если такая проблема возникает наоборот, на сервере?

    Выдается следующее сообщение:

    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 естественно нужно изменить)

  86. Вячеслав

    Спасибо за статью, но, сразу после установки и настройки mail() начал выдавать ошибку:
    Could not execute mail delivery program "c:\bin\sendmail\sendmail.exe"
    Немного покопавшись с настройками IIS и правами на NTIFS было выяснено, что для корректной работы необходимо дать разрешение на чтение/исполнение пользовотелю IUSR_## для папки, в которой лежит sendmail.exe, а так же на файл cmd.exe.
    Самое смешное, что уровень безопасности самого IIS никак не влияет на возможность запуска cmd.exe.

  87. Artash

    Кто-нибудь может мне помочь у меня в 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.

    • Это означает, что сервер разорвал соединение. Попробуйте подключиться к другому серверу, может это проблемы у рамблера.
      Можете еще этот топик почитать.

      • Artash

        Настроил тоже самое дома и теперь получаю другую ошибку, не пойму в чем дело, не поможеш?

        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) возможно вы заходите через прокси

  88. Artash

    А что нет способов отправить E-mail, если я вхожу в интернет с помошью прокси

    • Почему нет? Просто нужно будет указывать в настройках параметры подключения (адрес и порт прокси). Я сам не пробовал, поэтому какие именно настройки изменить подсказать не могу.

  89. Sencey

    Что делать с такой ошибкой интерпретатора 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.

  90. Artash

    Владимир а ты случайно не знаеш в каком файле нужно настроить адрес и порт прокси

  91. серж

    скажите в чем может быть проблема. все настройки верны. стоит 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. Можно попробовать подключиться к другому серверу.

  92. Зуззук

    Вот такая вот фигня у меня на локальном сервере!
    Настройки у почты через корпоративный почтовик
    Подскажите где собака зарыта ??

    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.

  93. Спасибо автору, все работает.
    У кого не работает – у тех реально руки из **** растут :-)

    Совет тем у кого не работает: просто делайте как написано + читайте там где майл-отправитель регите какие настройки надо прописать.

    Например на рамблере:
    ; 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 и, не имея опыта их поиска, можно потратить очень много времени.

  94. tashkent34

    Владимир, помогите, пожалуйста, разобраться.
    В "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.
    Спасибо.

  95. Oleg

    Все заработало после удаления коментариев
    Автору +5

  96. MidaF

    Большое всем спасибо за помощь, особенно автору! Я долго мучался, ничего не получалось и когда совсем отчаялся меня спасла вот эта конфигурация (для 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
    —————–

    У меня это работает, письма моментально приходят на яндекс!
    Всем удачи!!!

  97. Валерий

    Доброго времени суток! Владимир, спасибо огромное за статью! У меня возникла следующая проблема: настроил все как показано выше, php скрипт вынес в отдельный файл, при запуске пишет ошибку
    Parse error: syntax error, unexpected ';' in C:\wamp\www\mailer.php on line 5
    в чем может быть проблема? заранее спасибо.

    • Вы копировали скрипт из статьи?
      Если да, нужно исправить кавычки на обычные – прямые. Их WordPress изменяет при публикации.

      Будут проблемы, пишите, я вышлю скрипт.

  98. Валерий

    Боюсь кавычки не помогут.. У меня еще более простой скрипт который вызываю из 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
    Вот сам скрипт:

    Все же попробовал пометь кавычки непомогло(
    Целый день уже бьюсь, ни в какую..(

  99. Валерий

    Обещанный скрипт))

  100. Валерий

    $mailto = 'моя_почта';
    mail($mailto, 'Test', 'Hello') or die('Error');
    echo 'CheckMessege';

  101. Валерий

    Все мой скрипт заработал) я как абсолютно незнающий php не знал что ; – это закоментированно, осталось лишь раскоментировать sendmail_path = "C:\wamp\sendMail\sendmail.exe -t"
    Статья супер, спасибо!

  102. Ваня

    подскажите,пожалуйста.У меня в error.log такая ошибка

    Socket Error # 10061Connection refused.

    Что ето значит??

    • Это значит, что сервер не хочет с вами соединяться. Причины могут быть разные, поэтому попробуйте просто подключится к другому серверу. И еще раз проверьте все параметры.

  103. Анна

    Писем действительно 32, рекомендациями из следующего поста пробовала воспользоваться – не помогло.

  104. В прошлом комментарии я ошибся. 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.

  105. Игорь

    У меня было то же самое

    Проверил порт SMTP: в Outlook'е стоял порт 2525, а в sendmail.ini : 25
    заменил 25 на 2525, перезапустил сервер и все пошло.

    Большое спасибо автору статьи.

]]>

Оставить комментарий

* - обязательные для заполнения поля

]]>