1С: чтение почты по протоколу IMAP
Прилетела задача прочитать сообщение из почтового ящика по протоколу IMAP. Последнее из пришедших. В принципе в 1С есть штатный функционал для чтения почты, поэтому пример всё сам расскажет за себя:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
Процедура ЧитнутьНаСервереImap() Профиль = Новый ИнтернетПочтовыйПрофиль; Профиль.АутентификацияPOP3 = Ложь; Профиль.АутентификацияSMTP = Ложь; // IMAP Профиль.ИспользоватьSSLIMAP = Истина; Профиль.АдресСервераIMAP = "цукацу-укацука.уцкацук.ru"; Профиль.ПортIMAP = "993"; Профиль.ПользовательIMAP = "укацу@укацукау.ru"; Профиль.ПарольIMAP = "цукацукацук"; Профиль.ТолькоЗащищеннаяАутентификацияIMAP=Ложь; Почта = Новый ИнтернетПочта; Сообщ = Новый СообщениеПользователю(); Почта.Подключиться(Профиль, ПротоколИнтернетПочты.IMAP); //ПротоколИнтернетПочты.POP3 заголовки=Почта.ПолучитьЗаголовки(); если заголовки.Количество()>0 тогда ПоследнийЗаголовок=Новый Массив(); ПоследнийЗаголовок.Добавить(заголовки[заголовки.Количество()-1]); МассивСообщений = Новый Массив; МассивСообщений = Почта.Выбрать(Ложь,ПоследнийЗаголовок); ТекстСообщения=МассивСообщений[0].тексты[0].Текст; сообщить(ТекстСообщения); конецесли; Почта.Отключиться(); КонецПроцедуры |
Из особенностей логики — сначала вычитываю заголовки, т.к. если почты много, то чтение писем будет ОЧЕНЬ долгим. Далее получаю последний по счету заголовок, и вычитываю текст конкретно уже этого письма.
Другие статьи по тегу 1С можете почитать тут