Имя: Пароль:
1C
 
Работа с почтой. Как удалить письма с сервера?
Ø
0 НовенькийЯ
 
23.07.06
09:32
Есть обработка в которой можно просмотреть почту, открыть вложения и... удалить сообщения.
так вот при удалении сообщений они не удаляются, а становятся невидимыми для выборки, а на сервере до сих пор лежат.
вот код:
  Почта=Новый ИнтернетПочта();
  Попытка
    Почта.Подключиться(ПочтовыйПрофиль);
  Исключение
    Сообщить("Ошибка при подключении к почтовому профилю!",СтатусСообщения.ОченьВажное);
    Возврат;
  КонецПопытки;
  ВсеСообщения=Почта.Выбрать(Ложь);
  Для Каждого Сообщение Из ВсеСообщения Цикл
    Попытка
      Если Сообщение.ИдентификаторСообщения=Идентификатор тогда
        МассивСообщений=Новый Массив;
        МассивСообщений.Добавить(Сообщение);
        Почта.УдалитьСообщения(МассивСообщений);
        Прервать;
      КонецЕсли;
    Исключение
      Сообщить("Ошибка при получении почты: "+ОписаниеОшибки(),СтатусСообщения.ОченьВажное);
      Отказ=Истина;
    КонецПопытки;
  КонецЦикла;
  Почта.Отключиться();
Подскажите что я делаю не так?
Писем навалилось уже много, а удалить их ни как не могу.
И еще вопрос, почему выборка
ВсеСообщения=Почта.Выбрать(Ложь);
Для Каждого Сообщение Из ВсеСообщения Цикл
***
***
КонецЦикла;
Долго отрабатывает?
З.Ы. Почтовый сервер находится в локальной сети, т.е. скорость обмена с сервером очень большая.
1 НовенькийЯ
 
24.07.06
08:38
попробуя так UP
Не ужели никто с почтой в 1С8.0 не работал???
2 НовенькийЯ
 
24.07.06
08:55
Всем спасибо, разобрался сам, тока не пойму почему сейча работает а раньше нет, в принципе одно и тоже делается. Вот код:
МассивСообщений.Очистить();
ВсеСообщения=Почта.Выбрать(Ложь);
Сообщения.Очистить();
Для Каждого Сообщение Из ВсеСообщения Цикл
  Попытка
    МассивСообщений.Добавить(Сообщение);
МассивСообщений - это переменная типа Массив, заполняется в момент чтения почтового ящика.
  Почта=Новый ИнтернетПочта();
  Попытка
    Почта.Подключиться(ПочтовыйПрофиль);
  Исключение
    Сообщить("Ошибка при подключении к почтовому профилю!",СтатусСообщения.ОченьВажное);
    Возврат;
  КонецПопытки;
  Для каждого Сообщение из МассивСообщений Цикл
    Попытка
      Если Сообщение.ИдентификаторСообщения=Идентификатор тогда
        СообщенияНаУдаление=Новый Массив;
        СообщенияНаУдаление.Добавить(Сообщение);
        Почта.УдалитьСообщения(СообщенияНаУдаление);
        СообщенияНаУдаление.Очистить();
        Прервать;
      КонецЕсли;
    Исключение
      Сообщить("Ошибка при получении почты: "+ОписаниеОшибки(),СтатусСообщения.ОченьВажное);
      Отказ=Истина;
    КонецПопытки;
  КонецЦикла;
  Почта.Отключиться();
т.е. в первом случае я перебирал сообщения в почтовом ящике и удалял нужное из них, во втором случая я перебираю массив с сообщениями, и потом уже нужное сообщение удаляю с сервера.
При этом ИМХО резкльтат должен быть одинаковым, а как показала практика, результаты разные.