Копировать ссылку на страницу

Получение писем по протоколу POP3, сохранение HTML-тел и вложений

Постановка задачи

Необходимо сохранить все входящие сообщения пользователя во временную папку 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()

© 2016 Компания DIRECTUM Сообщество пользователей DIRECTUM