Работа с почтовыми серверами по протоколу POP3



POP3-CHECK: "hostname-or-IP" "pop3user" "password"

Возвращает количество сообщений в указанном почтовом ящике или FALSE (0), если ящик пуст или программе не удалось установить подключение по протоколу POP3.

Существует вариант этого слова с постфиксным расположением параметров:

S" hostname-or-ip" S" pop3user" S" password" POP3-CHECK

POP3-CONNECT ( a-host u1 a-name u2 a-pass u3 -- ior )

Устанавливает соединение с почтовым сервером по протоколу POP3. Принимает в качестве аргументов строки с именем cервера, именем пользователя и паролем пользователя и возвращает т. н. IOR (I/O operation result) - результат операции ввода-вывода, т. е. номер возможной ошибки. Если IOR = 0, то ошибки не произошло. Для отключения от почтового сервера используется слово POP3-QUIT.

Пример:

#( test_pop3_connect
NoActive
Action:
    \ подключаемся к POP3 серверу
    S" hostname" S" username" S" password" POP3-CONNECT 0=
    IF
        \ работаем с почтой
        \ ...
        \ отключаемся от POP3 сервера
        POP3-QUIT THROW
    ELSE
        ERR-MSG: "Error when connecting to the POP3 server"
    THEN
)#

После успешного подключения к серверу можно использовать следующие слова для управления вашей почтой:

Примеры:

#( test_pop3_connect1
NoActive
Action:
    \ подключаемся к POP3 серверу
    S" hostname" S" username" S" password" POP3-CONNECT 0=
    IF
        \ выводим в сообщении кол-во сообщений на сервере
        MSG: "%POP3-STAT THROW%
        \ сохраняем номера сообщений и их размер в файл c:\mail.txt
        POP3-LIST S" c:\mail.txt" FWRITE
        \ выводим текст самого последнего сообщения на консоль
        POP3-STAT THROW
        POP3-RETR THROW TYPE CR
        \ отключаемся от POP3 сервера
        POP3-QUIT THROW
    ELSE
        ERR-MSG: "Error when connecting to the POP3 server"
    THEN
)#

#( test_pop3_connect2
NoActive
Action:
    \ подключаемся к POP3 серверу
    S" hostname" S" username" S" password" POP3-CONNECT 0=
    IF
\ выводим номера сообщений и их размер на консоль POP3-LIST THROW TYPE CR
\ отключаемся от POP3 сервера
POP3-QUIT THROW ELSE ERR-MSG: "Error when connecting to the POP3 server"
THEN )# #( test_pop3_connect3 NoActive Action: \ подключаемся к POP3 серверу S" hostname" S" username" S" password" POP3-CONNECT 0= IF
\ выводим номера сообщений и их размер на консоль POP3-LIST THROW TYPE CR
\ получаем кол-во сообщений на сервере POP3-STAT THROW ?DUP
IF \ в цикле отображаем на консоли текст всех сообщений 1+ 1 DO I POP3-RETR THROW TYPE CR \ удаляем каждое сообщение
I POP3-DELE THROW
LOOP
THEN \ отключаемся от POP3 сервера
POP3-QUIT THROW ELSE ERR-MSG: "Error when connecting to the POP3 server"
THEN )#

POP3-GET ( a u a1 u1 a2 u2 u3 -- a u )

Это постфиксное слово получает с POP3-сервера указанное сообщение (по его номеру) и оставлят на стеке строку с текстом сообщения. Принимает в качестве аргумента имя (или IP-адрес) POP3-сервера, имя пользователя, пароль пользователя и номер сообщения, которое нужно получить.

Пример:

#( test_get_mail 
NoActive 
Action: 
    \ получаем письмо #10
    S" mail.server.com" S" user" S" password" 10 POP3-GET 
    \ отображаем текст на консоли
    TYPE CR
)#

#( test_get_mail1
NoActive 
Action: 
    \ получаем письмо #5
    S" mail.server.com" S" user" S" password" 5 POP3-GET 
    \ сохраняем текст в файл 'c:\get.mail' 
    S" c:\get.mail" FWRITE 
)#

#( test_get_mail2
NoActive 
\ получаем самое последнее письмо на сервере
0 VALUE number_of_messages 
Action: 
    \ узнаем количество сообщений на сервере
    S" mail.server.com" S" user" S" password" POP3-CHECK 
    \ сохраняем число сообщений в VALUE-переменную
    TO number_of_messages 
    number_of_messages 0<>
    IF
        \ получаем самое последнее сообщение
        S" mail.server.com" S" user" S" password" number_of_messages POP3-GET 
        \ сохраняем текст в файл 'c:\get.mail' 
        S" c:\get.mail" FWRITE 
    THEN
)#