2 / 2 / 0
Регистрация: 07.03.2012
Сообщений: 17

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

13.03.2012, 21:38. Показов 3102. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru