Как проверить наличие аккаунта в Outlook2003

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
Программирование на CAVO / / Как проверить наличие аккаунта в Outlook2003

Страницы: 1  новая тема

Автор Сообщение

Группа: Участники
Сообщений: 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 все ОК.
Не сталкивался ли кто с такой проблемой?

Группа: Модераторы
Сообщений: 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


Прошу прощения, если "навёл тень на плетень"... Всего лишь стараюсь помочь.

Группа: Участники
Сообщений: 21
Добавлено: 28-03-2012 23:18
ValeraN!
Вот спасибо! Именно то, что доктор прописал!
Не знал о существовании такой штуки как SyncObjects. На MSDN'e, конечно, искал, но, видимо, неправильно формулировал запрос, вот и не нашел ничего толкового.
А тут практически сразу готовое решение. И реагирует правильно - и на наличие аккаунтов, и на отсутствие оных.
Огромное спасибо.

Страницы: 1  новая тема
Раздел: 
Программирование на CAVO / / Как проверить наличие аккаунта в Outlook2003

Отвечать на темы могут только зарегистрированные пользователи

KXK.RU