Просмотр полной версии : Работа с pst файлами в С
chamomilla
17.03.2010, 21:50
Проблема в следующем:
В случае использования Microsoft Outlook вся почта загружается на Ваш компьютер и хранится в одном PST файле (Он по своей сути похож на БД). В файле PST помимо почты хранятся Контакты, Заметки, Задачи - все объекты, которые видны в дереве папок. Очень часто эти PST достигают очень больших размеров (Мб или несколько Гб), и стащить их с чужого компьютера тяжело и нецелесообразно если необхдимо прочесть всего несколько писем.
Меня интересует: есть ли функции или библиотека для языка С, с помощью которой можна работать с этими файлами (то есть открыть, просмотреть. отфильтровать по дате или по заголовку)?
из того что я нашел есть только MAPI i libPST, может кто-то знает что-то более детально?
chamomilla
18.03.2010, 13:20
все, чтоя нашел по данному вопросу упирается в Simple MAPI и MAPI 1.0 - набор динамических библиотек, которые содержат функции для работы с почтой. Конкретней говорится даже о том, что доступ к PST осуществляется посредством MAPI. кто-то слыхал? может доводилось работать?
Hiro Protagonist
18.03.2010, 14:27
msdn слышало )
http://msdn.microsoft.com/ru-ru/library/245421h5.aspx
chamomilla
18.03.2010, 14:32
Конечно слышал, но меня интересует вот что - используя MAPI мы действительно обращаемся к pst файлам Outlooka?
А при использованиии libpst для *nix подобных систем происходит чтение структуры пст файла (перечитывая соответствующие биты и байты), как работать в таком случае?
chamomilla
20.03.2010, 22:41
Неужели никто никогда не работал с почтой??? не писал своих приложений для отправки и приема сообщений?
А что касается замечания товарища Hiro Protagonist, то msdn - дает не такую уж полную инфу, потому как формат файлов ПСТ является служебным и закрытым (хотя недавно Microsoft пообещали его открыть и представить детальную документацию)
Но если бы все программисты сидели и ждали пока им все готовенькое выложат....
можно в исходниках readpst (http://www.marklyon.org/gmail/readpst.zip) посмотреть как libpst использовать
доки (http://www.five-ten-sg.com/libpst/rn01re05.html) по формату тоже есть. Осталось реализовать %)
chamomilla
22.03.2010, 12:33
Я уже рассматривал вариант использования libpst, но все-таки остановился на MAPI - можно напрямую работать с сообщениями, без предварительного разбора файла пст по формату.
Так что будем юзать "мапи" и пока ограничимся готовыми функциями)))
chamomilla
22.03.2010, 17:21
И так с помощью фунций MAPI удалось все-таки добраться до сообщений и прочесть их)))Но теперь возникла такая проблема:
появляется диалоговое окошко, в котором предлагается ввести логин и пароль, или просто выдается предупреждение о том, что мол Вы пытаетесь обратиься к файлам Outlooka, разрешить?
Каким образом можно "погасить" эти окна?
И еще:
Теперь мне нужно прочесть адрессную книгу, в MAPI есть функция MAPIAddress() - у меня с ней тоже все получилось, но опять таки выплывает окно - в котором отбражаются все контакты.
Есть вариант использования такой конструкции IMAPISession::OpenAddressBook (детально можно посмотреть сдесь (http://msdn.microsoft.com/en-us/library/cc815381.aspx))
Кто мне поможет с онной разобраться???
попробуй просто искать окно с неким текстом в заголовке и эмулировать нажатие клавиши ОК в этом окне, чтобы предоставить доступ твоей проге к аутлуку.
chamomilla
23.03.2010, 16:12
Спасибо SWAPPER буду пробовать...
Я все таки доступился к адрессной книге!!!
теперь могу прочесть имена пользователей и их мыло)))
теперь хотелось бы попробовать получить и остальные данные о контактах из адрессной книги (например телефон, домашний адресс, вобщем все поля которые доступны аутлуку)...
каким образом можно это осуществить?
ЕЩЕ: можно ли прочесть и другие данные из пст файла, например заметки, календарь и т.д.???
chamomilla
06.04.2010, 23:50
мои "разборки" длились очень долго но вроде бы я их победил...выяснил следующее:
Для доступа к пст файлам существует 2 варианта:
1. Simple MAPI - #include <mapi.h>
2. Extended MAPI - #include <mapix.h>
Simple MAPI представлен набором из 12 функций. который предоставляют возможность для работы в основном только с папкой для входящих сообщений (Inbox), ниже приведены все 12 функций:2.1. MAPIAddress
1. MAPIAddress
2. MAPIDeleteMail
3. MAPIDetails
4. MAPIFindNext
5. MAPIFreeBuffer
6. MAPILogoff
7. MAPILogon
8. MAPIReadMail
9. MAPIResolvName
10. MAPISaveMail
11. MAPISendDocumets
12. MAPISendMail
А вот второй интерфейс предоставляет гораздо больше возможностей - есть специальные методы для доступа к Адрессной книги, всем папкам пользователя (Входящие, Исходящие, Черновики, Заметки). Почти все методы описаны в MSDN, но уж очень скудненько. Хотя именно Extended MAPI дает довольно таки неплохие возможно поковыряться в чужой почте, начиная с контактов пользователя, закачивая чем угодно на Ваш вкус))).
И еще полезная заметка для тех. кто возможно заинтересуется - при работе с Extended MAPI в качестве наглядного пособия очень удобно использовать утилитку OutlookSPY!!!
Кто заинтересован в данной теме - пишите!!!
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot