HelpF.pro

Получение почты используя IMAP или POP3

В данном примере используется IMAP и POP3
Для использования POP3 раскомментируйте строки и Профиль.АутентификацияPOP3 = Истина;

Код 1C v 8.2 УП
 &НаКлиенте
Процедура ПолучитьСообщений(Команда)

ПутьСохранения = "D:\temp";

Профиль = Новый ИнтернетПочтовыйПрофиль;

//Профиль.АдресСервераPOP3 = "re05.hc.ru";
//Профиль.ПортPOP3 = "995";
//Профиль.Пользователь = "robot@site.ru";
//Профиль.Пароль = "11223344";
Профиль.АутентификацияPOP3 = Ложь;
Профиль.АутентификацияSMTP = Ложь;


// IMAP
Профиль.ИспользоватьSSLIMAP = Истина;
Профиль.АдресСервераIMAP = "re05.hc.ru";
Профиль.ПортIMAP = "993";
Профиль.ПользовательIMAP = "robot@site.ru";
Профиль.ПарольIMAP = "11223344";
Профиль.ТолькоЗащищеннаяАутентификацияIMAP=Ложь;

Почта = Новый ИнтернетПочта;

Сообщ = Новый СообщениеПользователю();

Попытка
Почта.Подключиться(Профиль, ПротоколИнтернетПочты.IMAP); //ПротоколИнтернетПочты.POP3
// Получаем все сообщения из почтового ящика
МассивСообщений = Новый Массив;
МассивСообщений = Почта.Выбрать(Ложь);
Исключение
// Ошибка при подключении к серверу или при приеме сообщения обмена
Сообщ.Текст = " - Ошибка при подключении или приеме" + ОписаниеОшибки();
Сообщ.Сообщить();
Возврат;
КонецПопытки;

// Массив будет содержать сообщения, которые в последствии будут удалены с сервера
МассивСообщенийОбмена = Новый Массив;

Если МассивСообщений.Количество() = 0 Тогда
// Сообщений в почтовом ящике нет
Сообщ.Текст = "Сообщений в почтовом ящике нет.";
Сообщ.Сообщить();
Возврат;
КонецЕсли;

ИмяФайлаСообщения = "";
Для Индекс = 0 По МассивСообщений.Количество() - 1 Цикл
// Отбираем только сообщения, которые содержат файлы прайсы, остальное спам )
ЧастьТемы = "Price list";
Если Лев(МассивСообщений[Индекс].Тема, СтрДлина(ЧастьТемы)) = ЧастьТемы Тогда
Попытка
// Записываем файл
МассивСообщений[Индекс].Вложения[0].Данные.Записать(ПутьСохранения+"\"+МассивСообщений[Индекс].Вложения[0].ИмяФайла);
Сообщ.Текст = "Принят файл: " + МассивСообщений[Индекс].Вложения[0].ИмяФайла + " с адреса " + Профиль.Пользователь;
Сообщ.Сообщить();
Исключение
Сообщ.Текст = "Похоже нет файла в письме ) ";
Сообщ.Сообщить();
КонецПопытки;
Иначе
Почта.УдалитьСообщения(МассивСообщений[Индекс]);
КонецЕсли;
КонецЦикла;

Сообщ.Текст = "Сообщения получены!";
Сообщ.Сообщить();
Почта.Отключиться();

КонецПроцедуры

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq82/view/1488.html