Что нового

Библиотека для работы с IMAP4 - сервером

Latoid

Знающий
Сообщения
95
Репутация
11
AutoIt: 3.2.12.1 или новее
Версия: 0.5
Категория: Сеть
Описание: Собрание функций для работы с IMAP4 - сервером

Код: Пример
Код:
#include <_IMAP4.au3>

$Server = "ok.lirosta.lt"
$Login = "test" ; В качестве логина иногда нужно приводить полный e-mail, к примеру [email protected]
$Password = "test"

;~ Подключаемся к IMAP4 - серверу
_IMAP4Connect ($Server, $Login, $Password)
If @error Then
	ConsoleWrite ("Не удалось подключится к IMAP4 серверу" & @CRLF)
	Exit
Else
	ConsoleWrite ("Успешно подключился к IMAP4 серверу" & @CRLF)
EndIf

; Посылаем команду NOOP (не делает ничего)
_IMAP4Noop()
If @error Then
	ConsoleWrite ("Команда NOOP не прошла" & @CRLF)
	Exit
Else
	ConsoleWrite ("Команда NOOP прошла успешно" & @CRLF)
EndIf

; Получаем UIDL всех писем
Local $UIDLlist = _IMAP4Uidl()
If @error Then
	ConsoleWrite ("Не удалось получить список UID всех писем" & @CRLF)
	Exit
Else
	ConsoleWrite ("Успешно получил список UID всех писем" & @CRLF)
	_ArrayDisplay ($UIDLlist, "Номера и UIDL всех писем")
EndIf

; Получаем размер письма №1
Local $SizeList = _IMAP4List(1)
If @error Then
	ConsoleWrite ("Не удалось получить размер письма" & @CRLF)
	Exit
Else
	ConsoleWrite ("Успешно получил размер письма" & @CRLF)
	_ArrayDisplay ($SizeList, "Номер и размер письма")
EndIf

; Получаем весь заголовок письма №1
Local $Header = _IMAP4Top(1)
If @error Then
	ConsoleWrite ("Не удалось получить заголовок письма" & @CRLF)
	Exit
Else
	ConsoleWrite ("Успешно получил заголовок письма" & @CRLF)
	ConsoleWrite ($Header & @CRLF)
EndIf

; Получаем поля Subject, Date, From заголовка письма №1
Local $HeaderFields = _IMAP4Top(1, "Subject Date From")
If @error Then
	ConsoleWrite ("Не удалось получить поля заголовка письма" & @CRLF)
	Exit
Else
	ConsoleWrite ("Успешно получил поля заголовка письма" & @CRLF)
	ConsoleWrite ($HeaderFields & @CRLF)
EndIf

; Скачиваем письмо с №1
Local $Letter = _IMAP4Retr(1)
If @error Then
	ConsoleWrite ("Не удалось получить письмо" & @CRLF)
	Exit
Else
	ConsoleWrite ("Успешно получил письмо" & @CRLF)
	ConsoleWrite ($Letter & @CRLF)
EndIf

; Скачиваем письмо №1 с прогресс-баром
$MsgNum = 1
Local $SizeList = _IMAP4List($MsgNum)
If @error Then
	ConsoleWrite ("Не удалось получить размер письма" & @CRLF)
	Exit
Else
	ConsoleWrite ("Успешно получил размер письма" & @CRLF)
	$MsgSize = StringRegExpReplace ($SizeList[1], "^\d+\s", "")
	ConsoleWrite ($MsgSize & @CRLF)

	Local $Letter = _IMAP4Retr($MsgNum, $MsgSize)
	If @error Then
		ConsoleWrite ("Не удалось получить письмо" & @CRLF)
		Exit
	Else
		ConsoleWrite ("Успешно получил письмо" & @CRLF)
		ConsoleWrite ($Letter & @CRLF)
	EndIf
EndIf


; Удаляем письмо с №1 (точнее ставим ему флаг "\Deleted")
;~ _IMAP4Dele(1)
;~ If @error Then
;~ 	ConsoleWrite ("Не удалось удалить письмо" & @CRLF)
;~ 	Exit
;~ Else
;~ 	ConsoleWrite ("Успешно удалил письмо" & @CRLF)
;~ EndIf


; Закрываем подключение к IMAP4 - серверу
_IMAP4Quit (True) ; True подтверждает окончательное удаление писем, помеченных флагом "\Deleted". По умолчанию стоит False
If @error Then
	ConsoleWrite ("Не удалось закрыть подключение к IMAP4 серверу" & @CRLF)
	Exit
Else
	ConsoleWrite ("Успешно закрыл подключение к IMAP4 серверу" & @CRLF)
EndIf

;~ Разрываем TCP - сессию
_TCPDisconnect()
If @error Then
	ConsoleWrite ("Не удалось закрыть TCP сессию" & @CRLF)
	Exit
Else
	ConsoleWrite ("Успешно закрыл TCP сессию" & @CRLF)
EndIf

Файл: imap4.zip
Снимок: N/A

История версий:
*17.01.2010 v 0.5 Незначительные изменения:
Переделана _IMAP4Retr() - теперь она выводит Progress Bar при скачивании письма, если ей передан второй параметр - размер
Ужесточена метка (tag) команд, передаваемых серверу. Теперь вероятность, что такая же строка встретится в теле письма или в заголовке - ничтожна

* 05.01.2010 v 0.5 Первый релиз
Список функций:
_IMAP4Connect() Подключается к IMAP4 серверу и переходит в папку Inbox
_IMAP4Uidl() Получает UIDL всех или указанных писем (в массиве)
_IMAP4List() Получает размеры (в байтах) всех или указанных писем (в массиве)
_IMAP4Top() Получает заголовок или указанные поля заголовка выбранного письма (в строке)
_IMAP4Noop() Посылает серверу команду NOOP
_IMAP4Retr() Получает письмо с указанным номером (в строке)
_IMAP4Dele() Удаляет указанное письмо (точнее ставит ему флаг "\Deleted")
_IMAP4Quit() Закрывает соединение с IMAP4 сервером
_TCPDisconnect() Закрывает TCP-сессию. Всегда вызывайте её после _IMAP4Quit()

Источник: Нет
Автор(ы): Latoid
 
Автор
L

Latoid

Знающий
Сообщения
95
Репутация
11
Незначительное обновление
 
Верх