|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Работа с POP3 сервером |
|
|
[решено] Работа с POP3 сервером
|
|
Старожил Сообщения: 398 |
Здравствуйте!
Помогиет пожалуйста понять в чём проблема: #include <GUIConstantsEx.au3>
TCPStartup()
$ConnectedSocket = -1
$ConnectedSocket = TCPConnect("94.100.177.6", 110)
If @error Then
MsgBox(0, "", "Ошибка: " & @error)
Exit
EndIf
Global $GuiMain = GUICreate("test", 300, 255)
Global $GuiEdit = GUICtrlCreateEdit("", 10, 10, 280, 180)
Global $GuiInput = GUICtrlCreateInput("", 10, 200, 280, 20)
Global $GuiButtonSend = GUICtrlCreateButton("Выслать =>>", 200, 225)
GUISetState()
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then Exit
If $msg = $GuiButtonSend Then
GUICtrlSetData($GuiEdit, _
"Я" & " > " & GUICtrlRead($GuiInput) & @CRLF & GUICtrlRead($GuiEdit))
TCPSend($ConnectedSocket, GUICtrlRead($GuiInput))
If @error Then Exit
EndIf
$recv = TCPRecv($ConnectedSocket, 2048)
If @error Then Exit
If $recv <> "" Then GUICtrlSetData($GuiEdit, _
"pop3" & " > " & $recv & @CRLF & GUICtrlRead($GuiEdit))
WEnd
Скрипт коннектится показывает ответ сервера +OK, но когда я ввожу команду и нажимаю отправить сервер не отвечает.... Скажите пожалуйста как это исправить? И ещё вопросик как узнать IP адрес сервера? Например я ввожу pop.mail.ru, а скрипт должен мне показать 94.100.177.6 |
|
|
------- Отправлено: 16:19, 04-08-2009 |
|
Старожил Сообщения: 398
|
Профиль | Сайт | Отправить PM | Цитировать amel27, спасибо помогло.
Дальше сделал так: $ExtraPuTTY = EnvGet("ExtraPuTTY") ; путь к программе
$thConn = DllStructCreate("ulong") ; структура описателя соединения
If $ExtraPuTTY == "" Then MsgBox(16, "Script Error!", "Переменная окружения ExtraPuTTY не задана!")
; Открываем DLL
$hDll = DllOpen($ExtraPuTTY & "\ExtraPuTTY.dll")
If $hDll=-1 Then MsgBox(16, "Script Error!", "Файл ExtraPuTTY.DLL не найден!")
; Подключаемся...
$aRet = DllCall($hDll, "int", "Connexion", _
"str", "94.100.177.6", _ ; TargetName (TargetName or PuttySession Name )
"ptr", DllStructGetPtr($thConn), _ ; ConnexionId (Connexion Handle)
"str", "", _ ; Login
"str", "", _ ; Password
"int", 0, _ ; ShowPuTTY (TRUE: Putty Terminal is display, FALSE: not display)
"int", 0, _ ; Protocol (0:Telnet,1:SSH,2:Rlogin,3:Raw,4:LoadPutty Session)
"int", 110, _ ; PortNumber (If the parameter is set to 0, the value of the default settings of putty is used)
"int", 0, _ ; GenerateReport (1:extraputty report activate,0:Not activate)
"ptr", 0 ) ; CallBackRcvData
; Анализируем результат
If @error Then MsgBox(16, "DllCall Error!", @error &":"& @extended)
$hConn = DllStructGetData($thConn, 1) ; Получаем описатель соединения
ConsoleWrite("Результат выполнения ф-ции Connexion = "& $aRet[0] &@CRLF)
$aRet2 = DllCall($hDll, "int", "SendRcvData", _
"ptr", DllStructGetPtr($thConn), _
"str", "USER ЛОГИН", _
"int", 1, _
"str", "com", _
"int", 1000, _
"int", 1, _
"int", 2048, _
"int", 0)
ConsoleWrite("Результат выполнения ф-ции SendRcvData = "& $aRet2[0] &@CRLF)
; Закрываем соединение
If $hConn <> 0 Then
DllCall($hDll, "int", "CloseConnexion", "ulong", $hConn)
EndIf
Цитата:
|
|
|
------- Отправлено: 14:37, 06-08-2009 | #11 |
|
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата morgan1991:
$ExtraPuTTY = EnvGet("ExtraPuTTY") ; путь к программе
$thConn = DllStructCreate("ulong") ; структура описателя соединения
If $ExtraPuTTY == "" Then Exit MsgBox(16, "Script Error!", "Переменная окружения ExtraPuTTY не задана!")
$hDll = DllOpen($ExtraPuTTY & "\ExtraPuTTY.dll")
If $hDll=-1 Then Exit MsgBox(16, "Script Error!", "Файл ExtraPuTTY.DLL не найден!")
$aRet = DllCall($hDll, "int", "Connexion", _
"str", "94.100.177.6", "ptr", DllStructGetPtr($thConn), _
"str", "", "str", "", "int", 0, _
"int", 0, "int", 110, _
"int", 0, "ptr", 0 )
If @error Then MsgBox(16, "DllCall Error!", @error &":"& @extended)
$hConn = DllStructGetData($thConn, 1) ; Получаем описатель соединения
ConsoleWrite("Результат выполнения ф-ции Connexion = "& $aRet[0] &@CRLF)
$iMax = 1024 ; размер буфера
$tBuf = DllStructCreate("char["& $iMax &"]") ; буфер
$tpBuf = DllStructCreate("ptr") ; указатель на буфер
DllStructSetData($tpBuf, 1, DllStructGetPtr($tBuf)) ; устанавливаем указатель
$aRet = DllCall($hDll, "int", "SendRcvData", _
"ulong", $hConn, "str", "USER ivan@mybox.ru", _
"str", "", "str", "", "long", 1000, _
"int", DllStructGetPtr($tpBuf), "int", $iMax, _
"int", 0)
ConsoleWrite("Результат выполнения ф-ции SendRcvData = "& $aRet[0] &@CRLF)
ConsoleWrite("Содержимое буфера:"& DllStructGetData($tBuf,1) &@CRLF)
; Закрываем соединение
If $hConn <> 0 Then
DllCall($hDll, "int", "CloseConnexion", "ulong", $hConn)
EndIf
|
|
|
Отправлено: 10:17, 07-08-2009 | #12 |
|
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать Спасибо автору. Он сделал все совершенно верно в изначальном коде и без сторонних утилит. Я тоже убил сутки на раскрычивание этого дела, а стоило прочитать спецификацию pop3. Каждая команда оканчивается символом CRLF (перенос каретки).
Изначальный код верен с добавлением этого символа |
|
Отправлено: 21:40, 28-01-2011 | #13 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| C/C++ - Работа с сервером MySql | Smile | Программирование и базы данных | 0 | 14-10-2009 19:27 | |
| V. 5.5/2000/2003 - [решено] аутентификация пользователя по POP3 | Greg106 | Microsoft Exchange Server | 6 | 13-10-2009 17:29 | |
| V. 2007 - [решено] Внешние POP3 клиенты, релей писем | sgww | Microsoft Exchange Server | 9 | 25-08-2009 12:37 | |
| [решено] Telnet или POP3? | stone_wings | Хочу все знать | 2 | 07-04-2008 23:47 | |
| Работа с POP3 | Vovius | Программирование и базы данных | 1 | 06-05-2006 18:05 | |
|