Долго бился с проблемой получения почту в 1С, вот мой вариант решения:
Все знают о богатых настройках встроенного в платформу почтового клиента .
Я столкнулся с тем что с его помощью невозможно получить почту через ssl. После плясок с бубном по создания ssl-тунеля была найдена замечательная библиотека - EmailArchitect GetMail (приаттачена к публикации)
Она не только замечательно умеет работать с ssl, но и парсит html-код , ищет по разным полям и вообще ведёт себя лучшим образом.
В данном примере я постарался затронуть основные функции getmail полезные для автоматизации работы с почтой:
1.Получение писем
2.Поиск
3.Навигация по папкам
4.Чтение заголовков
//создаём коннект
oServer = Новый COMОбъект("EAGetMailObj.MailServer");
oClient = Новый COMОбъект ("EAGetMailObj.MailClient");
oClient.LicenseCode = "TryIt";
oServer.Server = "mail.mail.ru";
oServer.User ="vova.putin";
oServer.Password = "kremlin2012";
oServer.Protocol = 1;
oServer.SSLConnection = True;
oServer.Port = 993;
Попытка
oClient.Connect(oServer);
Исключение
КонецПопытки;
//если много папок заходим только в папку входящие
for each folder in oClient.Imap4Folders do
Если folder.Name = "INBOX" then
for each Subfolder in folder.SubFolders do
Если Subfolder.Name = "Рассылки" then
folder = Subfolder;
КонецЕсли;
enddo;
Прервать;
EndIf;
enddo;
oClient.SelectFolder(folder) ;
//отбираем все письма за сегодня
МассивЧисла=ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Формат(ТекущаяДата(), "Л=en_GB; ДЛФ=DD")," ");
Число = МассивЧисла[0]+"-"+ВРег(лев(МассивЧисла[1],3))+"-"+МассивЧисла[2];
arInfo=oClient.SearchMail("ALL ON "+Число);
КоличествоПисем=arInfo.getupperbound()+1;
i=0;
Запрос = Новый запрос;
Запрос.Текст = "ВЫБРАТЬ
| Рассылки.Строка
|ИЗ
| РегистрСведений.Рассылки КАК МК_Рассылки";
тз = запрос.Выполнить().Выгрузить();
Если КоличествоПисем тз.Колонки.Добавить("Получено");
тз.ЗаполнитьЗначения(Ложь,"Получено");
//читаем все письма из коллекции
пока i<>КоличествоПисем Цикл
info = arInfo.getvalue(i);
oMail = oClient.GetMail(info);
i=i+1;
для каждого рассылка из тз Цикл
Если Найти(oMail.Subject,СокрЛП(рассылка.строка))>0 Тогда
рассылка.получено=Истина;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
oClient.Quit();