Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
johnybgoode

Не работает авторизация на SMTP сервере

19.12.2012, 01:56. Показов 2928. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Возникла такая проблема. Мне нужно написать простейшую авторизацию на smtp-сервере. Я погуглил, нашёл, вот эту статью, и попробовал сделать, что-то похожее. Но авторизация у меня не заработала. Подскажите, пожалуйста, что я сделал неправильно? Вот мой код
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
ob_implicit_flush();
header('content-type: text/html; charset=windows-1251');
define('CRLF',"\r\n");
$fp = fsockopen("smtp.gmail.ru", 25, $errNo, $errStr, 5);
echo fgets($fp,1024).'<br />';
fputs($fp, "EHLO smtp.yandex.ru".CRLF);
echo fgets($fp,1024).'<br />';
fputs($fp, "AUTH LOGIN".CLRF);
echo fgets($fp,1024).'<br />';
fputs($fp, $_POST("login").CRLF);
echo fgets($fp,1024).'<br />';
fputs($fp, $_POST("password").CRLF);
echo fgets($fp,1024).'<br />';
require "sending.php";
?>
значения переменыых "login" и "password" берутся из форм, этот скрипт - обработчик формы)

Добавлено через 4 часа 16 минут
С авторизацией разобрался) Но теперь не могу сообщение оправить.
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
<!DOCTYPE HTML>
<?php
ob_implicit_flush();
header('content-type: text/html; charset=windows-1251');
define('CRLF',"\r\n");
global $fp, $mailfrom;
$mailfrom=$_POST["login"];
$fp = fsockopen("smtp.google.com", 25, $errNo, $errStr, 5);
echo fgets($fp,1024).'<br />';
fputs($fp, "EHLO smtp.google.com ".CRLF);
echo fgets($fp,1024).'<br />';
fputs($fp, "AUTH LOGIN".CLRF);
echo fgets($fp,1024).'<br />';
fputs($fp,  $_POST["login"].CRLF);
echo fgets($fp,1024).'<br />';
fputs($fp, $_POST["password"].CRLF);
echo fgets($fp, 1024).'<br />';
require "sending.php";
$msg="AAA";
$where="<main.void@yandex.ru>";
$subject="aaa";
fputs($fp, "SEND FROM {$mailfrom}".CRLF);
echo fgets($fp,1024).'<br />';
fputs($fp, "RCPT TO {$where}".CRLF);
echo fgets($fp,1024).'<br />';
fputs($fp, "DATA".CRLF);
echo fgets($fp,1024).'<br />';
fputs($fp,"To: {$where}".CRLF.CRLF);
fputs($fp,"Subject: {$subject}".CLRF);
fputs($fp, $msg.CLRF.CLRF);
echo fgets($fp,1024).'<br />';
fputs($fp, "QUIT".CRLF);
и сервер не выводит ответы по echo) просто форма открывается "sending.php". Правда сверху пустое место для вывода сервера оставлено, но самого вывода нет.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.12.2012, 01:56
Ответы с готовыми решениями:

Авторизация на SMTP сервере
Ребят, такая проблема. Пишу приложение с сокетами на java. Цель - отправка сообщений smtp-серверу. У меня всё получилось кроме авторизации...

Авторизация на SMTP-сервере
Есть простенькое задание для лабы (SMTP-клиент на сокетах). Тестирую на mail.ru. Что отправить аргументом с HELO? Добавлено через 7...

Smtp авторизация Lotus Domino 7
Здравствуйте! Подскажите пожалуйста как можно в Lotus Domino 7, сделать авторизацию на 25 порт. Проблема в том, что сейчас на...

2
14 / 14 / 1
Регистрация: 20.04.2010
Сообщений: 102
19.12.2012, 02:26
SEND FROM - это команда? разве есть такая.
отправка ссобщения:
MAIL FROM:< [adress] >
RCPT TO:< [adress] >
DATA

:<> - обязательно
на yandex точно сработает. на разных ящиках замечал нюансы в общении с сервером
0
johnybgoode
19.12.2012, 19:05
Цитата Сообщение от fit Посмотреть сообщение
SEND FROM - это команда? разве есть такая.
отправка ссобщения:
MAIL FROM:< [adress] >
RCPT TO:< [adress] >
DATA

:<> - обязательно
на yandex точно сработает. на разных ящиках замечал нюансы в общении с сервером
SEND - используется вместо команды MAIL и указыает, что почта должна быть доставлена на терминал пользователя.
c MAIL тоже пробовал, не работало.

Добавлено через 2 часа 5 минут
Цитата Сообщение от johnybgoode Посмотреть сообщение
:<> - обязательно
на yandex точно сработает. на разных ящиках замечал нюансы в общении с сервером
У меня в коде:
PHP
1
$where="<main.void@yandex.ru>";
Пробовал с логином так же сделать, ничего не выходит.

Добавлено через 15 минут
Попробовал прямо из статьи код скопировать и свои данные подставить. Письмо не отправляется всё равно.
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
$smtp_server = "smtp.yandex.ru";
$port = 25;
$mydomain = "smtp.yandex.ru";
$username = "main.void";
$password = "*****";//не буду палить свой пароль, в коде он был)
$sender = "main.void@yandex.ru";
$recipient = "johnybgoode777@gmail.com";
$subject = "test";
$content = "test";
 
// Initiate connection with the SMTP server
$handle = fsockopen($smtp_server, $port);
fputs($handle, "EHLO $mydomain\r\n");
 
// SMTP authorization
fputs($handle, "AUTH LOGIN\r\n");
echo fgets($handle,1024).'<br />';
fputs($handle, base64_encode($username)."\r\n");
fputs($handle, base64_encode($password)."\r\n");
echo fgets($handle,1024).'<br />';
 
 
// Send out the e-mail
fputs($handle, "MAIL FROM:<$sender>\r\n");
echo fgets($handle,1024).'<br />';
fputs($handle, "RCPT TO:<$recipient>\r\n");
echo fgets($handle,1024).'<br />';
fputs($handle, "DATA\r\n");
echo fgets($handle,1024).'<br />';
fputs($handle, "To: $recipient\r\n");
echo fgets($handle,1024).'<br />';
fputs($handle, "Subject: $subject\r\n");
echo fgets($handle,1024).'<br />';
fputs($handle, "$content\r\n");
echo fgets($handle,1024).'<br />';
fputs($handle, ".\r\n");
 
// Close connection to SMTP server
fputs($handle, "QUIT\r\n");
Вывод такой получился:
220 smtp2h.mail.yandex.net ESMTP (Want to use Yandex.Mail for your domain? Visit http://pdd.yandex.ru)
250-smtp2h.mail.yandex.net
250-8BITMIME
250-PIPELINING
250-SIZE 42991616
250-STARTTLS
250-AUTH LOGIN PLAIN
250-DSN

Вот сейчас пришло всё-таки!!! С тормозами, но дошло!!!

Добавлено через 3 часа 28 минут
Одна проблема - письмо приходит без текста.
Вот так выглядит код сейчас.
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
<!DOCTYPE HTML>
<?php
ob_implicit_flush();
header('content-type: text/html; charset=windows-1251');
 
$port = 25;
$mydomain = $_POST["domain"];
$smtp_server = "smtp.".$mydomain;
echo $smtp_server."<br>";
$username = $_POST["login"];
$password = $_POST["password"];
$sender = $username."@".$mydomain;
echo $sender."<br>";
$recipient = $_POST["where"];
$subject = $_POST["about"];
$content = $_POST["msg"];
 
// Initiate connection with the SMTP server
$handle = fsockopen($smtp_server, $port);
fputs($handle, "EHLO $mydomain\r\n");
 
// SMTP authorization
fputs($handle, "AUTH LOGIN\r\n");
fputs($handle, base64_encode($username)."\r\n");
fputs($handle, base64_encode($password)."\r\n");
 
// Send out the e-mail
fputs($handle, "MAIL FROM:<$sender>\r\n");
fputs($handle, "RCPT TO:<$recipient>\r\n");
fputs($handle, "DATA\r\n");
fputs($handle, "To: $recipient\r\n");
fputs($handle, "Subject: $subject\r\n");
fputs($handle, base64_encode($content)."\r\n");
fputs($handle, ".\r\n");
 
// Close connection to SMTP server
fputs($handle, "QUIT\r\n");
 
?>
Строка вида
PHP
1
$username = $_POST["login"];
- данные забираются из формы.

Добавлено через 2 минуты
И ещё - нужно как-то сделать, чтобы файл можно было прикрепить и передать. Кто-нибудь знает, как это сделать?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.12.2012, 19:05
Помогаю со студенческими работами здесь

JS работает медленно на сервере. На локальном сервере быстро. В чём разница
Вечер добрый Сайт уже загрузил все JS/CSS/HTML. И после этого начинаются лаги. При открытие сайта с локального сервера - всё...

Авторизация на сервере
Гуру, посоветуйте... Есть МОЙ сайт. На нем МОЯ система авторизации написанная с нуля (куки+сессии). Через браузеры работает. ...

Авторизация на сервере
Здравствуйте! &lt;html&gt; &lt;head&gt; &lt;title&gt;Авторизация&lt;/title&gt; &lt;/head&gt; &lt;?php $mylogin = 'admin'; $mypass = '123'; $mylogin2 =...

Авторизация на сервере
привет всем. никак не могу авторизироваться на сервере уже второй день. перепробовал кучу вариантов. вот код метода: public String...

Авторизация на сервере
Клиент-серверное приложение. Решили сделать на сервере авторизацию по логину-паролю. Мне не понятен сам механизм как это работает. Каков...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru