|
[ На главную ] -- [ Список участников ] -- [ Зарегистрироваться ] |
On-line: |
Программирование на CAVO / / Как проверить наличие аккаунта в Outlook2003 |
Страницы: 1 |
Автор | Сообщение |
leo_bond Группа: Участники Сообщений: 21 |
Добавлено: 28-03-2012 05:30 |
Проблема: на машине установлен Офис2003, но почта в Аутлуке не настроена - нет ни одной учетной записи. Как это можно проверить программно? В Аутлуке 2007 и 2020 это делается просто: oOLNS:=oOutlook:GetNamespace("MAPI") // Проверяем наличие хоть одного аккаунта (уч. записи) - Это работает в АЛ-2007 и 2010 oAccounts:=oOLNS:Accounts // Eсли установлен Аутлук, но нет уч. записей IF oAccounts:Count == 0 ... Но в 2003 такого свойства нет и как проверить наличие хоть 1 аккаунта,не знаю. Соответственно, прога далее пытается отправить сообщение с несуществующего аккаунта и вылетает ошибка. В 2007 и 2010 все ОК. Не сталкивался ли кто с такой проблемой? |
|
ValeraN Группа: Модераторы Сообщений: 177 |
Добавлено: 28-03-2012 13:01 |
С OutLook не работал, но пробежался по Google и выскажу свои мысли. То, что у Вас выпадает ошибка - это признак того, что Вы перед выполнением операции что-то не проверяете. Я не знаю, как у Вас построена работа. Предположу, что Вы работаете через OleAutoObject. Тогда, желательно, у каждого объекта проверять свойство fInit на предмет правильной инициализации. И т.д. и т.п. Теперь по сути: неплохая ссылка http://hiprog.com/index.php?option=com_content&task=view&id=251661546&Itemid=35 На мой взгляд, если настроена почта, то должна быть папка задач. И первое, что надо сделать - проверить её наличие. Дальше, если нет объекта Account - использовать что-то другое. Например, параметр Item. Типа такого: Function Send_Receive() //Принудительная отправка/прием почты Dim OL_App As Outlook.Application Dim OL_NameSpace As Outlook.NameSpace Dim OL_FolderCalendar As Outlook.MAPIFolder // получаем объект Outlook Set OL_App = CreateObject("Outlook.Application") // получаем Namespace Set OL_NameSpace = OL_App.GetNamespace("MAPI") Dim oSyncs As Outlook.SyncObjects Dim oSync As Outlook.SyncObject Set oSyncs = OL_NameSpace.SyncObjects Set oSync = oSyncs.Item("Все учетные записи") // Если английский Outlook то "All Accounts" oSync.Start End Function Прошу прощения, если "навёл тень на плетень"... Всего лишь стараюсь помочь. |
|
leo_bond Группа: Участники Сообщений: 21 |
Добавлено: 28-03-2012 23:18 |
ValeraN! Вот спасибо! Именно то, что доктор прописал! Не знал о существовании такой штуки как SyncObjects. На MSDN'e, конечно, искал, но, видимо, неправильно формулировал запрос, вот и не нашел ничего толкового. А тут практически сразу готовое решение. И реагирует правильно - и на наличие аккаунтов, и на отсутствие оных. Огромное спасибо. |
Страницы: 1 |
Программирование на CAVO / / Как проверить наличие аккаунта в Outlook2003 |