Постановка задачи
Необходимо сохранить все входящие сообщения пользователя во временную папку D:\Temp\msg\. Тело сообщения сохранять в HTML-формате. Название файла формировать по шаблону: msg<№ сообщения>(<кодировка сообщения>).
Дополнительно сохранять все вложения в ту же папку. Название файлов формировать по шаблону: msg<№ сообщения>_<имя файла вложения>.
Программный код
// Определить константы.
adTypeBinary = 1
adSaveCreateOverWrite = 2
// Создать почтовую фабрику.
MailFactory = CreateObject("SBUM.MailFactory")
// Запросить у фабрики сервер типа "POP3".
Server = MailFactory.GetServer("POP3")
// Создать и означить параметры входа на сервер.
Credentials = MailFactory.CreateParamList()
Credentials.Items("User") = "user1"
Credentials.Items("Password") = "user1password"
Credentials.Items("Server") = "pop.mymail.ru"
// Выполнить вход на сервер.
Server.Logon(Credentials)
// Создать параметры фильтрации сообщений.
FilterParams = MailFactory.CreateParamList()
// Найти все входящие.
IncomingMessages = Server.SearchInbox(FilterParams)
// Выгружать все сообщения во временную папку.
TargetFolder = "D:\Temp\msg\"
// Обработать все сообщения.
i = 0
while i < IncomingMessages.Count
Msg = IncomingMessages.Values(i)
k = 0
// Обработать все вложения.
Attachments = ""
while k < Msg.Attachments.Count
Attachments = Attachments & Msg.Attachments.Names(k) & "; "
// Сохранить вложение при помощи потока.
StreamOut = CreateObject("ADODB.Stream")
StreamOut.Type = adTypeBinary
StreamOut.Open()
StreamOut.Write(Msg.Attachments.Values(k))
StreamOut.SaveToFile(TargetFolder & "msg" & i & "_" &
Msg.Attachments.Names(k); adSaveCreateOverWrite)
k = k + 1
endwhile
// Сохранить HTML-тело сообщения при помощи потока.
StreamOut = CreateObject("ADODB.Stream")
StreamOut.Type = adTypeBinary
StreamOut.Open()
StreamOut.Write(Msg.RawBody)
StreamOut.SaveToFile(TargetFolder & "msg" & i &
"(" & Msg.RawBodyEncoding & ").html"; adSaveCreateOverWrite)
i = i + 1
endwhile
// Выполнить выход с сервера.
Server.Logoff()
© Компания Directum, 2020 | Сообщество пользователей Directum |