Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/16: Рейтинг темы: голосов - 16, средняя оценка - 4.94
2 / 2 / 0
Регистрация: 07.03.2012
Сообщений: 17

Принимать почту с Exchange сервера

13.03.2012, 21:38. Показов 3085. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
HEELP!!!
Всем привет!
Есть локальная сеть, на каждом рабочем месте стоит MS Outlook присоединенный к Exchange серверу.
Хочу программно принимать почту и кидать по СМС на телефон.
Как отправить СМС понятно, а вот принимать почту с Exchange сервера я еще не умею.
Помогите решить такую интересную проблему. Желательно с примерами.
Заранее СПАСИБО!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.03.2012, 21:38
Ответы с готовыми решениями:

Принимать почту на сервере
Как принимать почту, то есть возможно отправить письмо с яндекс почты на сервер и через php вывести результат?

Outlook перестал принимать почту
Здравствуйте! У нас возникла проблема - Outlook перестал принимать входящую почту. При этом ошибки не выдает. Исходящая почта работает...

Принимать почту с вложениями и сохранять их
Приветствую! Может ли кто-нибудь направить на путь истинный по реализации приёма почты вместе с вложениями, которые можно сохранять...

9
 Аватар для AlexSt
61 / 60 / 9
Регистрация: 13.01.2009
Сообщений: 322
14.03.2012, 22:14
разбирайся в протоколах

MAPI — Основной протокол взаимодействия клиентов с Exchange Server, обладает наиболее широкой поддержкой функций обмена почтовыми сообщениями и совместной работы над документами, в календарях и адресных книгах. Начиная с Exchange Server 2007 — также основной протокол обмена данными между ролью Cервера хранения почты (Mailbox role) и прочими ролями Exchange Server 2007.
SMTP — основной протокол пересылки почтовых сообщений в Интернете и внутри организации Exchange.
POP3 — один из клиентских протоколов доступа к Exchange Server.
IMAP4 — один из клиентских протоколов доступа к Exchange Server.
HTTP/HTTPS — один из клиентских протоколов доступа к Exchange Server, кроме того используется для доступа мобильных устройств к Exchange Server, а также для пересылки и распространения адресных книг и календарей клиентам организации Exchange Server.
0
2 / 2 / 0
Регистрация: 07.03.2012
Сообщений: 17
15.03.2012, 00:08  [ТС]
Спасибо за ответ.
Это все понятно. через simple MAPI у меня получилось прочитать входящую почту, но смущает то, что он привязывается к почтовому клиенту (у меня он MS Outlook). А через SMTP у меня получилось только отправить письмо (используя TIdSMTP). Может у кого есть примерчик как принять почту по SMTP?
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
15.03.2012, 14:46
Цитата Сообщение от ra6xqp Посмотреть сообщение
Может у кого есть примерчик как принять почту по SMTP?
Такого примера нет !
SMTP (Simple Mail Transfer Protocol) - только для отправки почты.
Для принятия используется POP3
1
2 / 2 / 0
Регистрация: 07.03.2012
Сообщений: 17
16.03.2012, 08:37  [ТС]
Цитата Сообщение от _Dimon_ Посмотреть сообщение
SMTP (Simple Mail Transfer Protocol) - только для отправки почты.
Да я понял.
на simple MAPI у меня ругается MS Outlook, говорит что какая то левая прога хочет прочитать почту и спрашивает: разрешить доступ или нет?!. как от этого можно избавится?

Начал изучать mapix.h в MDSN, вот пока что понял и работает:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    HRESULT res;
    LPMAPISESSION pSvcSess;
    IMAPITable * lppTable;
    SRowSet * lppRows;
    ULONG FAR * lpulCount;
 
    res = MAPIInitialize(NULL);
    if(res != S_OK) { MessageBox(NULL, L"MAPIInitialize", L"Error!", MB_ICONERROR); return; }
 
    res = MAPILogonEx ( 0L, L"Outlook", NULL,
                     MAPI_NO_MAIL | MAPI_NEW_SESSION |
                     MAPI_EXPLICIT_PROFILE | MAPI_NT_SERVICE,
                     &pSvcSess);
 
    pSvcSess->GetMsgStoresTable(MAPI_UNICODE, &lppTable);
как дальше разобрать lppTable не знаю.
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
16.03.2012, 10:56
C MAPI не работал никогда. Всегда использовал POP3 и SMTP.
0
2 / 2 / 0
Регистрация: 07.03.2012
Сообщений: 17
16.03.2012, 11:10  [ТС]
Если через POP3 можно принять почту с exchange севером, было бы замечтательно.
Если есть примеры не стесняйтесь выкладывать. Заранее спасибо!
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
16.03.2012, 12:50
Ну смотри, ты ж говорышь, что написАл код для отправки на инди компонетах.
По аналогии сделай для отправки, или дай мне код для принятия - я тебе помогу
0
2 / 2 / 0
Регистрация: 07.03.2012
Сообщений: 17
18.03.2012, 09:15  [ТС]
Примеров с POP3 не нахожу. в некоторых местах говорят что через POP3 невозможно соединится с Exchange сервером.
Вот нацарапал примерчик на simple MAPI, который читает все входящие, и на который ругается MS Outlook(спрашивает: разрешить доступ или нет)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
    
LHANDLE lhSession;
ULONG err;
LPSTR lpszSeedMessageID;
LPSTR lpszMessageID;
MapiMessage *lpMessage;
char szSeedMessageID[512];
char szMessageID[512];
 
lpszSeedMessageID=&szSeedMessageID[0];
lpszMessageID=&szMessageID[0];
*lpszSeedMessageID = '\0';
 
HINSTANCE__ *hMAPILib;
LPMAPILOGON lpfnMAPILogon;
LPMAPIFINDNEXT lpfnMAPIFindNext;
LPMAPILOGOFF lpfnMAPILogoff;
LPMAPIREADMAIL lpfnMAPIReadMail;
LPMAPIFREEBUFFER lpfnMAPIFreeBuffer;
 
hMAPILib = LoadLibrary(L"MAPI32.DLL");
lpfnMAPILogon = (LPMAPILOGON) GetProcAddress(hMAPILib, "MAPILogon");
lpfnMAPILogoff = (LPMAPILOGOFF) GetProcAddress(hMAPILib, "MAPILogoff");
lpfnMAPIFindNext = (LPMAPIFINDNEXT) GetProcAddress(hMAPILib, "MAPIFindNext");
lpfnMAPIReadMail = (LPMAPIREADMAIL) GetProcAddress(hMAPILib, "MAPIReadMail");
lpfnMAPIFreeBuffer = (LPMAPIFREEBUFFER) GetProcAddress(hMAPILib, "MAPIFreeBuffer");
 
err = (*lpfnMAPILogon)(0L, NULL, NULL, 0L, 0L, &lhSession);
if(err != SUCCESS_SUCCESS) return;
err = (*lpfnMAPIFindNext)(lhSession, 0L, NULL, lpszSeedMessageID, MAPI_GUARANTEE_FIFO, 0L, lpszMessageID);
if(err != SUCCESS_SUCCESS) return;
 
int i = 0;
while(err == SUCCESS_SUCCESS)
 {
   err = (*lpfnMAPIReadMail)(lhSession, 0L, lpszMessageID, MAPI_SUPPRESS_ATTACH, 0L, &lpMessage);
   if(err == SUCCESS_SUCCESS)
    {
      if((lpMessage->lpOriginator->lpszName != NULL) && lpMessage->lpOriginator->lpszName[0] != '\0')
       ListBox1->Items->Add("От: " + AnsiString(lpMessage->lpOriginator->lpszName));
       else
       ListBox1->Items->Add("От: " + AnsiString(lpMessage->lpOriginator->lpszAddress));
      
      ListBox1->Items->Add("Тема: " + AnsiString(lpMessage->lpszSubject));
 
      ListBox1->Items->Add("");
     }
 
   (*lpfnMAPIFreeBuffer)(lpMessage);
   lstrcpy((wchar_t *)lpszSeedMessageID, (wchar_t *)lpszMessageID);
   err = (*lpfnMAPIFindNext)(lhSession, 0L, NULL, lpszSeedMessageID, MAPI_GUARANTEE_FIFO, 0L, lpszMessageID);
 
   i++;
  }
незабываем #include <mapi.h> и кидаем на форму ListBox
как настроить MS Outlook, что бы он на него не ругался?
0
2 / 2 / 0
Регистрация: 07.03.2012
Сообщений: 17
22.03.2012, 22:37  [ТС]
Пытаюсь разобрать следующий вариант:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 pOutlook = new TOutlookApplication(this);
 Explorer *mySel = pOutlook->Explorers->Item(Variant(1));
 pOutlook->Connect();
 
 ns = pOutlook->GetNamespace(WideString("MAPI").c_bstr());
 
 OlDefaultFolders odf = 6;
 MAPIFolderPtr gdf = ns->GetDefaultFolder(odf);
 Caption = AnsiString(gdf->Name);
 
 MailItemPtr msg;
 for(int i=0; i<gdf->Items->Count; i++)
  {
   msg = gdf->Items->Item(Variant(i));
   Memo1->Lines->Add(AnsiString(msg->SenderName));
  }
(для работы нужно прикрепить к проекту bcbofficexp.lib и приписать #include <Outlook_XP_srvr.h>)
вот в этом месте - "msg = gdf->Items->Item(Variant(i));" у меня выдает ошибку: "Нарушены границы массива".
на VB проблему решили так: http://hiprog.com/forum/read.p... theme=4791
Как решить проблему на C++ Builder?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.03.2012, 22:37
Помогаю со студенческими работами здесь

Как можно принимать и отправлять почту через JSP?
Как можно принимать и отправлять почту через JSP? Желательно с вложениями

Как принимать данные по Telnet от сервера?
Здравствуйте. Нужна помощь по нескольким вопросам. 1.Я создаю Telnet Client который должен подключаться по IP и порту,к точке доступа...

Microsoft Outlook и недоступность Exchange сервера
Доброго времени суток. Вопрос: как прописать адрес (возможно, через командную строку) exchange сервера для Outlook 2010? При...

Переброс портов на два почтовых сервера Exchange
Добрый день! У меня такая проблема, есть 2 почтовых сервера Exchange с разными доменами (.kz и .com), оба домена в разных лесах, в...

После установки Exchange Server 2010 нет конфигурации сервера
Такая проблема установил Exchange Server 2010, перед этим просмотрел видео Ильи Рудь быстрый старт. Сделал вроде все правильно, установка...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru