Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
AndreyCS
.NET 4.x

Ошибка COM в переборе писем при взаимодействии с Outlook 2010

22.01.2013, 17:43. Показов 2681. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Возникла странная проблема, связанная с взаимодействием c# и Outlook 2010. Суть:
Есть программа, которая проходится по письмам почтовика, соответственно через COM, и ищет письма, содержащие определенные слова в теме плюс это делается за выбираемый период времени. Если письмо найдено, то оно попадает в определенный список (ну и далее неважно).
Действия:
1. Получаем необходимую папку во входящих сообщениях по ее имени
2. Тип Folder - представляет собой папку аутлука - в ней MailItems
3. MailItem - представляет собой само письмо.
Foreach-ем проходимся по всем письмам в папке и если письмо нас удовлетворяет условиям, то попадает в список.
C#
1
2
3
4
foreach (MailItem mi in employerFolder.Items)
 {
//Здесь проверка условий и т.п
 }
И все хорошо работало сначала у меня. Поставил клиенту программу - на i-ом письме выдается ошибка: Невозможно привести COM-объект типа "System.__ComObject" к интерфейсному типу "Microsoft.Office.Interop.Outlook.MailIt em". Операция завершилась со сбоем, поскольку вызов QueryInterface COM-компонента для интерфейса с IID "{00063034-0000-0000-C000-000000000046}" возвратил следующую ошибку: Интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)).

Думал, думал - поставил на машине клиента Visual Studio - хотел запустить отладку и посмотреть, т.к у меня на машине не появлялась такая ошибка - после установки студии программа у него заработала))
Ну думаю, все ок - через некоторое время вернулся к разработке программы - теперь у меня такая ошибка. Просто, никаких изменений не происходило в коде - бац, и не происходит до конца перебор писем. Смотрю в дебагере какое письмо не обрабатывается - убрал его из папки входящих писем, так стало ругаться на другом письме...
Окружение: Win 7x64, VS 2010, Office 2010 x32. Разработка на Виртуальной Машине VMWare.visual studio office tools 2010 стоят, библиотека Microsoft.Office.Interop.Outlook используется 14-й версии, т.е для 2010-го офиса. NET 4.5 да и младшие версии дают то же...

Надежды мало, но может быть кто-нибудь сталкивался с взаимодействием с Outlook, может быть даже копался в письмах? Непонимаю так же, почему больше сотни писем обрабатывается, а запарывается где-то ближе к концу процесса. Как можно не привести employerFolder.items к MailItem, когда это и есть коллекция MailItem?
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.01.2013, 17:43
Ответы с готовыми решениями:

Ошибка при взаимодействии с MS Office
Здравствуйте, форумчане! при попитке взаймодействовать с MS Office (Word/Excel) выводиться такая ошибка: Прошо помоч в решение...

Outlook 2010, сохранять вложения из поступающих писем
Нужен макрос для outlook 2010. Макрос должен сохранять вложения из поступающих писем, заданных правилом, в папки по датам, т.е. папка...

Правило для отправки писем outlook 2010
Добрый день! Передо мной стоит задача, над которой бьюсь всю неделю и видимо не пойду на выходные :( Помогите, пожалуйста, блондинке....

2
AndreyCS
24.01.2013, 17:55
Можно закрывать тему. Мой косяк в обрабатываемых данных))
 Аватар для Kurakov
0 / 0 / 1
Регистрация: 02.07.2013
Сообщений: 25
08.08.2014, 17:01
Отпишу вариант решения, так как создатель решил придержать его для себя.
Данная ошибка выскакивает в том случае, когда мы пытаемся обработать объект, который не является MailItem. Необходимо поставить проверку через интерфейс и только после её прохождения обрабатывать письма.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
var folder = Application.Session.PickFolder();
            foreach (object obj in folder.Items)
            {
                var temp = obj as Outlook.MailItem;
                if (temp != null)
                {
                    if (temp.ReceivedTime.Date.ToUniversalTime() >= startDate.ToUniversalTime() &&
                        temp.ReceivedTime.Date.ToUniversalTime() < finishDate.ToUniversalTime())
                    {
                        yield return temp;
                    }
                }
            }
В этом варианте я использую не is оператор, а as, так как он менее ресурсоемкий. Присвоение же объекта происходит при удачном прохождении каста, в случае не соответствия типов ошибка не выскакивает.

Ошибка вылетает из-за того, что в папке могут хранится объекты не только типа MailItem.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.08.2014, 17:01
Помогаю со студенческими работами здесь

Как на VBA в Outlook при переборе узнать, есть ли у письма ЭЦП
Как на VBA в Outlook при переборе (проверяю адрес отправителя и тему) узнать есть ли у письма ЭЦП...? ПОВТОРЯЮ проверяю не...

Ошибка при открытии Microsoft Outlook 2010
Здравствуйте. Осваиваю по-немногу программу и столкнулся со следующим. Тренировался в сохранении папки входящих писем одного из ящиков...

Ошибка при создании учетной записи в microsoft outlook 2010
Здравствуйте! При создании учетной записи (рис 1) в Microsoft Outlook 2010 появилось сообщение (рис2) об ошибке при проверке данных. Что...

Кодировка при отправке писем через Outlook
Доброго времени суток!!! Суть проблемы в том, что при отправке писем из Excel через Outlook происходит следующее. Если Outlook открыт, то...

Ошибка PyQt5 при взаимодействии с Python 3.6.4
Здравствуйте! Помогите пожалуйста разобраться. Установил на windows 10 python 3.6.4, затем при помощи pip установил PyQt 5. При...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru