Аватар для wwowa
308 / 261 / 70
Регистрация: 01.12.2008
Сообщений: 1,031

Отправка письма openserver smtp local

14.02.2020, 15:44. Показов 3933. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не отправляется письмо по smtp. Я использую класс от фреймеворка fat free. Но собственно это не суть. Я ставил и PHPMailer - тот вообще виснет. Я ставил скрипт на хостинг - так там все работает. Так что дело точно получается в опенсервере. Я читал про это, но там очень много непонятных мне слов
Просто хочется отладить все на локалке. Если кто сталкивался с подобным - напишите как решить.
Кстати, просто функцией mail() и настройкой smtp в настройках сервера - письмо тоже уходит прекрасно.....
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.02.2020, 15:44
Ответы с готовыми решениями:

Отправка письма через SMTP на почту
Здравствуйте. Есть проблема. Хостинг разрешает отправку писем только через SMTP: "У нас нельзя отправлять почту просто функцией PHP...

Отправка письма с вложением на почту SMTP
Добрый день. Просьба помочь со следующей проблемой: <?php function show_form() { ?> <form action=""...

Отправка письма php. Письма со скрипта на локальном сервере (Denwer) не приходят на почту.
Доброго Времени Суток!!! Я запускаю Денвером php скрипт со следующим кодом <?php $name=$_GET; $email=$_GET; $tel=$_GET; ...

8
 Аватар для wwowa
308 / 261 / 70
Регистрация: 01.12.2008
Сообщений: 1,031
17.02.2020, 08:52  [ТС]
Я же и пишу, что с настройками сервера и mail() все отправляется. Не отправляется, когда я все эти настройки SMPT забиваю в коде. Пробовал PHPMailer - тот же результат. Там не формируется какой то сокет. Но лезть то туда незачем. С хостинга все отправляется.
Поэтому это чисто практический вопрос - тем кто сталкивался с этим.
0
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
18.02.2020, 09:09
На что можно обратить внимание? 1. Запустить open server из более высокими правами, повышая постепенно до прав владельца. Посмотреть как настраиваются права для запущенного процесса в конкретно вашей операционной системе, лучше всего смотреть на официальном сайте. 2. Для MS Windows, есть старая программа, не знаю жива ли еще эта программа, называется netcat , эта программа открывает и слушает tcp порт, не помню точно верно ли она называется netcat , будьте внимательны. Запускаем отправку электронки и смотрим что показывает netcat . 3. В протоколе SMTP , для этого протокола, возможно, есть различные версии, и сервер который принимает электронку, и клиент из которого идет email функционируют для версии протокола SMTP , либо для множества версий протокола. Наверное где-то не согласуются команды, сервер не принемает клиентское подключение и завершает подключение. Проще всего посмотреть команды общения SMTP. Не выкладывайте здесь конфиденциальную информацию, ip адреса! 4. Включите в модуле режим отладки, включите в модуле вывод ошибок. 5. Протрассируйте весь модуль до самого низа передачи email , это просто и можно быстро найти в чем причина.
1
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
18.02.2020, 16:01
Может в настройке openserver, в интерпретаторе PHP нет библиотеки php_sockets.dll ? + ко всему еще в файле php.ini параметр error_reporting , установлен, например, в E_NOTICE ?

В этом случае надо загрузить библиотеку php_sockets.dll из сайта php.net , которая совместима из версией встроенного в openserver интерпретатора PHP , и надо разкоментировать строку в которой эта библиотека подключается, либо если строки нет прописать вручную.

Code
1
extensions=php_sockets.dll
Параметр error_reporting , наверное надо переключить в E_ALL .

Code
1
error_reporting = E_ALL
В конфигурационном файле параметры комментируются символом точка из запятой.

Code
1
; текст_комментариев
Перезагружать сервер в этом случае, не надо? Наверное, не надо.
1
Заблокирован
18.02.2020, 16:11
Цитата Сообщение от elnorbert Посмотреть сообщение
Может в настройке openserver, в интерпретаторе PHP нет библиотеки php_sockets.dll ?
Цитата Сообщение от wwowa Посмотреть сообщение
Я же и пишу, что с настройками сервера и mail() все отправляется. Не отправляется, когда я все эти настройки SMPT забиваю в коде.
он хочет СВОИМ скриптом отправлять


wwowa, когда-то в каменном веке во времена динозавров мы с бабушкой делали так

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
function smtpmail($mail_to, $subject, $message, $headers='') {
 
        //Настройки почты
        $config['smtp_username'] = '';  // имя почтового ящика
        $config['smtp_password'] = '';  // пароль.
        $config['smtp_from']   = ''; // поле "От кого"
        $config['smtp_host']   = '';  // сервер для отправки почты
        $config['smtp_port']   = ''; // порт 
        $config['smtp_debug']   = false;  // если Вы хотите видеть сообщения ошибок, укажите true вместо false
        $config['smtp_charset'] = 'UTF-8';   // кодировка сообщений
 
        $SEND =   "Date: ".date("D, d M Y H:i:s") . " UT\r\n";
        $SEND .=   'Subject: =?'.$config['smtp_charset'].'?B?'.base64_encode($subject)."=?=\r\n";
        if ($headers) $SEND .= $headers."\r\n\r\n";
        else
        {
            $SEND .= "Reply-To: ".$config['smtp_username']."\r\n";
            $SEND .= "MIME-Version: 1.0\r\n";
            $SEND .= "Content-Type: text/plain; charset=\"".$config['smtp_charset']."\"\r\n";
            $SEND .= "Content-Transfer-Encoding: 8bit\r\n";
            $SEND .= "From: \"".$config['smtp_from']."\" <".$config['smtp_username'].">\r\n";
            $SEND .= "To: $mail_to <$mail_to>\r\n";
            $SEND .= "X-Priority: 3\r\n\r\n";
        }
        $SEND .= $message."\r\n";
         if( !$socket = fsockopen($config['smtp_host'], $config['smtp_port'], $errno, $errstr, 30) ) {
            if ($config['smtp_debug']) echo $errno."<br>".$errstr;
            return false;
         }
 
            if (!server_parse($socket, "220", __LINE__)) return false;
 
            fputs($socket, "EHLO " . $config['smtp_host'] . "\r\n");
            if (!server_parse($socket, "250", __LINE__)) {
            if ($config['smtp_debug']) echo '<p>Не могу отправить EHLO!</p>';
            fclose($socket);
             return false;
            }
            fputs($socket, "AUTH LOGIN\r\n");
            if (!server_parse($socket, "334", __LINE__)) {
            if ($config['smtp_debug']) echo '<p>Не могу найти ответ на запрос авторизации!</p>';
            fclose($socket);
            return false;
            }
            fputs($socket, base64_encode($config['smtp_username']) . "\r\n");
            if (!server_parse($socket, "334", __LINE__)) {
            if ($config['smtp_debug']) echo '<p>Логин авторизации не был принят сервером!</p>';
            fclose($socket);
            return false;
            }
            fputs($socket, base64_encode($config['smtp_password']) . "\r\n");
            if (!server_parse($socket, "235", __LINE__)) {
            if ($config['smtp_debug']) echo '<p>Пароль не был принят сервером как верный! Ошибка авторизации!</p>';
            fclose($socket);
            return false;
            }
            fputs($socket, "MAIL FROM: <".$config['smtp_username'].">\r\n");
            if (!server_parse($socket, "250", __LINE__)) {
            if ($config['smtp_debug']) echo '<p>Не могу отправить команду MAIL FROM:</p>';
            fclose($socket);
            return false;
            }
            fputs($socket, "RCPT TO: <" . $mail_to . ">\r\n");
 
            if (!server_parse($socket, "250", __LINE__)) {
            if ($config['smtp_debug']) echo '<p>Не могу отправить команду RCPT TO:</p>';
            fclose($socket);
            return false;
            }
            fputs($socket, "DATA\r\n");
 
            if (!server_parse($socket, "354", __LINE__)) {
            if ($config['smtp_debug']) echo '<p>Не могу отправить команду DATA!</p>';
            fclose($socket);
            return false;
            }
            fputs($socket, $SEND."\r\n.\r\n");
 
            if (!server_parse($socket, "250", __LINE__)) {
            if ($config['smtp_debug']) echo '<p>Не могу отправить тело письма. Письмо не было отправлено!</p>';
            fclose($socket);
            return false;
            }
            fputs($socket, "QUIT\r\n");
            fclose($socket);
            return TRUE;
}
function server_parse($socket, $response, $line = __LINE__) {
        global $config;
        $server_response="";
    while (substr($server_response, 3, 1) != ' ') {
        if (!($server_response = fgets($socket, 256))) {
            if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response
$line
";
            return false;
            }
    }
    if (!(substr($server_response, 0, 3) == $response)) {
           if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response
$line
";
           return false;
        }
    return true;
}
 
//Отправить почту сразу нескольким получателям, ящики получателей пишем через запятую.
 
function smtpmassmail($mail_to, $subject, $message, $headers='')
{
$mailaddresses=explode(",",$mail_to);
foreach ($mailaddresses as $mailaddress) smtpmail($mailaddress,$subject,$message,$headers);
}
теперь вместо mail() используем smtpmail()
1
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
18.02.2020, 17:00
Что-то не доганяю... mail это встроенная в PHP функция? Эта функция пользуется настройками из php.ini ? Есть mail на удаленном сервере, где отправка работает, и на локальном сервере, где отправка ТОЖЕ работает? На удаленном сервере класс от фреймворка fat free и PHPMailer, работает. Класс от фреймворка fat free и PHPMailer не работают на локальном сервере? Вот может причина в отсутствии php_sockets.dll, либо в том что закоментировано подключение в конфигурационном файле и это не выводится в браузер потому что error_reporting = E_NOTICE, например.
1
 Аватар для wwowa
308 / 261 / 70
Регистрация: 01.12.2008
Сообщений: 1,031
18.02.2020, 20:57  [ТС]
Я тогда все-таки на хостинге отлажу. Вникать во все остальное не хочется - я гору обойду, наверноеЭтот вопрос у меня не на первом месте - во все не вникнешь. Я думал - какую галочку поставить - и все.
Но позже я попробую все советы здесь приведенные. Спасибо.
0
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
19.02.2020, 09:21
Понятно, wwowa .

Еще в php.ini есть параметр display_errors , при поиске неисправностей, его надо задать значением On .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.02.2020, 09:21
Помогаю со студенческими работами здесь

Не отправляются письма с SMTP
Есть сайт и при оформлении заказа приходят письма не через смтп, а через виртуальный сервер. Заголовки там поддельные и мейлру их...

Отправка писем: PHPMailer и OpenServer
всем привет. возникла такая проблема после переустановки винды. хочу через PHPMailer отправить письмо, вот код: $email =...

Отпрaвка письма через SMTP, требующий аунтификацию
подскажите как реализовать отправку письма через SMTP требующий аунтификацию p.s Каждый кто советует RTFM давайти линк :)

Отправка прикрепленного файла в письме через smtp
Всем доброго времени суток. Ситуация такая. Настроил я отправку писем через smtp и отправку прикрепленных файлов. Все прекрасно...

SMTP: отправка письма
IdSMTP1.Host:= 'smtp.yandex.ru'; { Выбираем SMTP сервер } IdSMTP1.Username:= 'test@yandex.ru'; { Ваш логин } IdSMTP1.Password:=...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru