Авторизуйтесь или зарегистрируйтесь, чтобы создать новую тему

Доступ к почте из своего модуля

paxerus
26
paxerus 10.11.2010 13:58 | #

Добрый день

1)Есть необходимость получать доступ к входящей почте, почтового ящика, настроенного на нескольких пользователей,из своего модуля

Как это можно реализовать, не нашел в интерфейсах объекта для работы с почтой(возможно плохо искал), не хотелось бы лезть в базу за этими данными

2)Есть ли возможность дописывать текущие модули, например добавлять дополнительные ссылки в левой панели? и вообще можно ли к ним как то доступ получать?

Алло, TeamWox на связи!

Спешим сообщить о выпуске бета-версии нового модуля «Телефония» для системы управления предприятием TeamWox. Теперь любой желающий может бесплатно получить функционал офисной АТС на своем рабочем месте.

paxerus
26
paxerus 10.11.2010 14:20 | #
Maxdm:

Права доступа

На данной вкладке указываются права пользователей для просмотра, редактирования и администрирования данного почтового ящика:

Назначение и удаление пользователей из списка правообладателей происходит с помощью кнопок Добавить и . При нажатии кнопки "Добавить" появляется окно назначения пользователей, работа с которым описана в разделе Описание интерфейса -> Списки назначенных. Для удаления всего списка уже назначенных пользователей используется кнопка . Если требуется удалить только одного пользователя из списка уже назначенных, необходимо нажать кнопку , расположенную справа от каждого выбранного пользователя.

Права разделены на следующие категории:

  • Просмотр — пользователи (группы) смогут только просматривать письма в почтовом ящике.
  • Редактирование — пользователи (группы) дополнительно смогут отвечать на письма, создавать новые, редактировать и удалять имеющиеся письма.
  • Администрирование — пользователи (группы) дополнительно смогут редактировать настройки почтового ящика и удалить его.

спасибо за ответ, но я имел  ввиду немного другое ,я пишу свой модуль в котором хочу собирать определенные письма с определенных почтовых ящиков затем уже буду определенным способом их обрабатывать в своем модуле


alexey
487
alexey 10.11.2010 15:26 | #
paxerus:

спасибо за ответ, но я имел  ввиду немного другое ,я пишу свой модуль в котором хочу собирать определенные письма с определенных почтовых ящиков затем уже буду определенным способом их обрабатывать в своем модуле

Получить доступ к списку почтовых цепочек и сообщений можно используя API модуля Email - файл [TeamWox_SDK]\SDK\API\Email.h


paxerus
26
paxerus 10.11.2010 15:30 | #
я правильно понял что я должен наследоваться от объектов из этого файла? или нужно действовать как описано тут http://www.teamwox.com/ru/forum/152201?
alexey
487
alexey 10.11.2010 16:41 | #
paxerus:
я правильно понял что я должен наследоваться от объектов из этого файла? или нужно действовать как описано тут http://www.teamwox.com/ru/forum/152201?

Как описано в указанном топике - запрашивать интерфейс IEmailManager у модуля Email:

if(RES_FAILED(res=m_server->GetInterface(TXW_EMAIL,L"IEmailManager",(void**)&m_email_manager)) || m_email_manager==NULL)
   ReturnErrorExt(res,NULL,"failed get interface IEmailManager");

У полученного интерфейса вызывать методы и работать со списком.

Хотелось бы заметить, что в конце работы с интерфейсами обязательно необходимо вызывать метод Release(), если он описан в интерфейсе.

Например, при получении списка пользователей или списка почтовых ящиков или списка почтовых цепочек.

paxerus
26
paxerus 11.11.2010 10:35 | #
спасибо попробую,а что значит TXW_EMAIL в методе GetInterface
pvoid
132
pvoid 11.11.2010 11:26 | #
paxerus:
спасибо попробую,а что значит TXW_EMAIL в методе GetInterface

GetInterface имеет три параметра. Первый идентификатор модуля у которого запрашивается интерфейс, второй имя интерфейса и третий для возвращаемого интерфейса.

Идентификаторы модулей можно найти в соответствующих заголовочных файлах в SDK. TWX_EMAIL например определен в email.h в SDK


paxerus
26
paxerus 11.11.2010 11:41 | #

вы немного опечатались TWX_EMAIL а не TXW_EMAIL

спасибо за помощь

paxerus
26
paxerus 11.11.2010 15:05 | #

добавил в CHelloWorldManager::Initialize(IServer *server)

строку

if(RES_FAILED(res=m_server->GetInterface(TWX_EMAIL,L"IEmailManager",(void**)&m_email_manager)) || m_email_manager==NULL)

   ReturnErrorExt(res,NULL,"failed get interface IEmailManager");

в объявлении класса объявил

  IEmailManager    *m_email_manager;

компилится нормально, но при консольной загрузке  тимвокса пишетсяошибка при запуске данного модуля


010-11-11 12:01:12     Debug   1                       CModulesManager::ModuleGt:779 failed [RES_E_OPERATION_UNAVAILABLE]
010-11-11 12:01:12     Debug   65536                   CHelloWorldManager::Initalize:67 failed get interface IEmailManager [RES_E_OPERATION_UNAVAILABLE]
010-11-11 12:01:12     Debug   65536                   CHelloWorldModule::Initilize:73 failed manager initialize [RES_E_OPERATION_UNAVAILABLE]
010-11-11 12:01:12     Error   1                       Module helloworld initiaize failed [RES_E_OPERATION_UNAVAILABLE]
010-11-11 12:01:12     Error   1                       CModuleManager::ModulesIit() module helloworld was not initialized
010-11-11 12:01:12     Info    1                       Module 'helloworld' relesed in 0 msecs
010-11-11 12:01:12     Info    1                       Modules initialized

010-11-11 12:01:12     Info    1                       CDataProviderManager ini

почему то не может получить интерфейс

с чем это может быть связано?


alexey
487
alexey 11.11.2010 15:36 | #

paxerus:

почему то не может получить интерфейс

с чем это может быть связано?

Инициализация модулей TeamWox проходит в два этапа:

  1. IModule::Initialize - при вызове данного метода модуль должен инициализировать свои менеджеры, подготовить кеш и провести предварительную работу.
    Запрашивать интерфейсы других модулей на данном этапе запрещено. Исключения составляют только интерфейсы сервера (IUserManager, IFilesManager и т.д.).

  2. IModule::PostInitialize - на данном этапе модуль может запрашивать интерфейсы любых модулей и начинать вызывать их метод.

Наличие двух этапов инициализации связано с тем, что задать порядок загрузки модулей сложно или не возможно. Модули могут зависеть от других модулей - как в Вашем случае. Зависимости могут быть циклическими. Модуль HelloWorld -> модуль Email -> Модуль Clients -> Модуль HelloWorld.

Для того, чтобы зависимости не влияли на порядок загрузки, инициализация идет в два этапа:

  • на первом этапе - модули загружаются и готовятся к работе, инициализируют внутренние структуры данных, менеджеры и т.д.
  • на втором этапе - после того как все модули готовы к работе, к ним можно обращаться, запрашивать и вызывать их интерфейсы.
Вам необходимо запрашивать интерфейс IEmailManager модуля Email  на втором этапе - в реализованном вашим модулем методе IModule::PostInitialize.
К списку тем  | 12

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий