Имя: Пароль:
1C
1С v8
Вопрос про IMAP и 1с81
,
0 MP-40
 
15.05.12
13:22
Привет!
Подскажите, что-то не могу понять - 1с81 не умеет почту по IMAP принимать чтоли?
Как работать с почтой вроде ясно, но вот как подключиться по этому протоколу непонятно.
1 Bober
 
15.05.12
13:29
решение для 8.1
http://infostart.ru/public/58093/

в 8.2.14 появилась возможность работать с IMAP
http://infostart.ru/public/85066/
3 MP-40
 
15.05.12
14:48
Спасибо.
4 MP-40
 
15.05.12
14:52
А нет ли у кого примера, как из 1С8 обращаться к MS Oulook и обрабатывать почту ?
5 experimentator76
 
15.05.12
14:59
(4) с этого надо начать
       Application = Новый ComОбъект("OutLook.Application");
сам только отсылал а не читал
6 MP-40
 
15.05.12
15:10
ха ха )))
7 experimentator76
 
15.05.12
15:40
(0)
например - в копилку знаний если нет
ХХХ@ХХХ.ХХ - это учетка

   Попытка
       Application = Новый ComОбъект("OutLook.Application");
   Исключение
       Предупреждение("Ошибка связи с OutLook !");
       Возврат;
   КонецПопытки;
   
   Для Каждого Folders_ ИЗ Application.Session.Folders Цикл
       Если Folders_.Name = "ХХХ@ХХХ.ХХ" Тогда
           Для Каждого Folders2_ ИЗ Folders_.Folders Цикл
               Если Folders2_.Name = "Входящие" Тогда
                   Для Каждого Folders3_ ИЗ Folders2_.Folders Цикл
                       Если Folders3_.Name = "Тест" Тогда
                           Если Folders3_.UnReadItemCount > 0 Тогда
                               Для Каждого Item_ ИЗ Folders3_.Items Цикл
                                   Если Item_.UnRead Тогда
                                       Сообщить(Item_.Body);
                                   КонецЕсли
                               КонецЦикла;
                           КонецЕсли;
                           Прервать;
                       КОнецЕсли;
                   КонецЦикла;
                   Прервать;
               КОнецЕсли;
           КонецЦикла;
           Прервать;
       КОнецЕсли;
   КонецЦикла;
8 experimentator76
 
15.05.12
15:43
аха только работает при запущенном аутлуке
надо еще копать
9 experimentator76
 
15.05.12
15:49
а не нормально работает
10 experimentator76
 
15.05.12
15:50
это я письмо новое прочитал и проверка сработала
11 MP-40
 
15.05.12
16:04
Ага, работает... Но как-то неочень красиво.
12 experimentator76
 
15.05.12
16:06
(11) ну да на объеме придется перебирать письма
может можно как-то по другому непрочитанные получать
есть вариант прочитанные перекладывать во вложенную папку чтоб не мешались
13 experimentator76
 
15.05.12
16:07
неэстетично... зато надежно, удобно и практично ))
14 MP-40
 
15.05.12
16:11
Неочень-то и ненадежно, да и не практично помоему )))
15 experimentator76
 
15.05.12
16:12
(14) а где у тебя ломается ?
16 MP-40
 
15.05.12
16:13
Нигде не ломается, просто ненравится
17 experimentator76
 
15.05.12
16:14
(16) ну копай дальше тогда... поделись чего нароешь )
18 MikhaDi4
 
15.05.12
20:53
19 experimentator76
 
15.05.12
21:18
(18) спасибо
немного по другому но похоже
все равно перебор писем происходит
кроме того мой вариант позволяет работать с несколькими учетками
и любыми нужными папками нужной вложенности
20 MikhaDi4
 
15.05.12
21:38
Сейчас попробовал сделать так:

Для Каждого Folders_ ИЗ Application.Session.Folders Цикл
       Если Folders_.Name = "imap.yandex.ru" Тогда
           Для Каждого Folders2_ ИЗ Folders_.Folders Цикл
               Если Folders2_.Name = "Входящие" Тогда
                   Для Й=1 по Folders2_.Items.Count Цикл
                       ТекПисьмо=Folders2_.Items(Й);
                       Если ТекПисьмо.UnRead Тогда
                           Сообщить(ТекПисьмо.Subject);
                           Если ТекПисьмо.Attachments.Count > 0 Тогда
                               Для У=1 по ТекПисьмо.Attachments.Count Цикл
                                   Сообщить(ТекПисьмо.Attachments(У).FileName);
                                   Datetimes = СтрЗаменить(ТекПисьмо.ReceivedTime, " ", "_");
                                   Datetimes = СтрЗаменить(Datetimes, ".", "_");
                                   Datetimes = СтрЗаменить(Datetimes, ":", "_");
                                   ТекПисьмо.Attachments(У).SaveAsFile("C:\mail\"+Datetimes+"_"+ТекПисьмо.Attachments(У).FileName);
                               КонецЦикла;
                           КонецЕсли;
                           Попытка
                               ТекПисьмо.UnRead=false;
                           Исключение
                               Сообщить(ОписаниеОшибки());
                           КонецПопытки;
                       КонецЕсли
                   КонецЦикла;
               КонецЕсли;    
           КонецЦикла;
       КОнецЕсли;
   КонецЦикла;



Но, при сбросе Unread выходит ошибка:
{Форма.Форма(200)}: Ошибка при установке значения атрибута контекста (UnRead): Неизвестная ошибка

При этом, письмо нормально помечается как прочтенное, но сам факт ошибки... Известно из-за чего она?
21 MikhaDi4
 
15.05.12
21:41
(19) Помоему одно и тоже )))
22 experimentator76
 
15.05.12
21:53
(20) понимаю что должно работать и с Ложь
может = 0 ?
23 experimentator76
 
15.05.12
21:55
(21) в приведенных примерах дефолтная папка для входящих получается сразу
но учеток может быть несколько со своими папками для "авто-чтения"
24 experimentator76
 
15.05.12
21:58
(20) немного неоптимально
когда нашел нужную папку цикл дальше не имеет смысла и его желательно прервать
желательно проверять в папке есть ли в ней ранее не прочитанные не перебирая в ней содержимое
а вообще было бы неплохо после обработки письма переложить в папку для прочитанных
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn