Tüm posta kutularına erişmek istatistikleri yapmak veya posta kutuları izleme uygulamaları gerekir. Bu özel bilgileri depoya ayrıcalıklı bir hesap ile oturum açarak posta kutularının listesini döngü gerçekleştirmek ve posta kutularını HrMailboxLogon() işlevini kullanarak açın.
Aşağıdaki kod, tüm sunucu üzerindeki posta kutularıyla açmaya gösterilmiştir. Exchange Server dizini üzerinde yönetimsel ayrıcalıklara sahip olması için bu uygulamayı başlatmak için kullandığınız Windows NT hesabı gerekir.
Bu kodu derlemek için kullanılan ek kitaplıklarının listesi aşağıdadır. (, Bir Win32 konsol uygulaması için gerekli kitaplıklar için eklemeniz.)
Version.lib
Exchsdk.lib
Mapi32.lib
Edkutils.lib
Edkmapi.lib
Msvcrt.lib
Işaretlenmiş kodundaki bazı öğeler vardır "TO:", erişim sunucusu için kuruluş ve site bilgilerini kullanmak için değiştirmeniz gerekir. Ayrıca, sunucunun kabul etmek için bu kodu değiştirmek mümkündür ayırt edici ad (DN) isteminden.
#include <stdio.h>
#include <edk.h>
HRESULT OpenMailbox(LPMAPISESSION lpMAPISession,
LPSTR pszExchangeServerName);
void main()
{
HRESULT hr = S_OK;
hr = MAPIInitialize(NULL);
if(FAILED(hr))
{
printf("Failed to initialize MAPI\n");
}
char pszExchangeServerName[500];
LPMAPISESSION lpSess = NULL;
LPMDB lpMDB = NULL;
// Get the Exchange Server name from the user.
//
printf("n\nPlease enter the name of your Exchange System ? ");
gets(pszExchangeServerName);
printf("\n\n");
// TO DO: Need to logon using a profile for the service account or
// an Exchange Admin.
hr = MAPILogonEx(0, "", NULL,
MAPI_LOGON_UI | MAPI_NEW_SESSION | MAPI_EXPLICIT_PROFILE ,
&lpSess);
if (FAILED(hr))
{
MessageBox(NULL,"MAPI Logon failed",NULL,MB_OK);
}
if(SUCCEEDED(hr)&& lpSess)
{
printf("Created MAPI session\n");
hr = OpenMailbox(lpSess, pszExchangeServerName);
if(FAILED(hr))
printf("Failed to Run\n");
else
printf("Opened users mailboxes\n");
}
char ch;
printf("\nHit a key to exit");
ch = getchar();
if(lpSess)
lpSess->Release();
}
HRESULT OpenMailbox(LPMAPISESSION lpMAPISession, LPSTR pszServerName)
{
HRESULT hr = S_OK;
LPMAPITABLE lpMailBoxTable = NULL;
LPSRowSet lpRows = NULL;
LPENTRYID lpMsgStoreID = NULL;
ULONG cbMsgStoreID = 0;
LPMDB lpMDB = NULL;
LPMDB lpUserMDB = NULL;
LPMAPIFOLDER lpFolder = NULL;
LPEXCHANGEMANAGESTORE lpIManageStore = NULL;
char pszServerDN[500];
if (FAILED(hr = HrOpenExchangePrivateStore(lpMAPISession, &lpMDB)))
{
MessageBox(0L,"Message Store Not Available","Error",MB_OK);
return MAPI_E_NOT_FOUND;
}
if (FAILED(hr = lpMDB->QueryInterface(IID_IExchangeManageStore,
(void **) &lpIManageStore)))
{
MessageBox(0L,"QueryInterace Failed","Error",MB_OK);
return MAPI_E_NOT_FOUND;
}
// TO DO: Create server DN. Replace "myorgname" and "mysitename"
// with appropriate organization and site name.
sprintf(pszServerDN,"/o=myorgname/ou=mysitename/cn=servers/cn=%s",
pszServerName);
if (FAILED(hr = lpIManageStore->GetMailboxTable(pszServerDN,
&lpMailBoxTable,0)))
{
MessageBox(0L,"Mailbox Table Not Available","Error",MB_OK);
return MAPI_E_NOT_FOUND;
}
// Get a list of Mailboxes taking up resources.
hr = HrQueryAllRows(lpMailBoxTable, NULL, NULL, NULL, 0, &lpRows);
if(SUCCEEDED(hr))
{
// TO DO: Create Information Store DN. Replace "myorgname"
// and "mysitename" with appropriate organization
// and site name.
sprintf(pszServerDN,
"/o=myorgname/ou=mysitename/cn=servers/cn=%s%s",
pszServerName,"/cn=Microsoft Private MDB");
if (lpRows->cRows > 0)
{
for (UINT i=0; i < lpRows->cRows; i++)
{
LPSPropValue lpspv = PpropFindProp(
lpRows->aRow[i].lpProps,
lpRows->aRow[i].cValues,
PR_EMAIL_ADDRESS );
if(FAILED(hr = HrMailboxLogon(lpMAPISession,
lpMDB,pszServerDN,lpspv->Value.lpszA,
&lpUserMDB)))
{
MessageBox(0L,"Mailbox Not Available","Error",MB_OK);
continue;
}
else
{
printf("Opened %s \n",lpspv->Value.lpszA);
}
// TO DO: ****** Place Mailbox Processing Here.
HrMailboxLogoff(&lpUseMDB);
}
}
}
if(lpRows)
{
FreeProws(lpRows);
}
if(lpMailBoxTable)
{
lpMailBoxTable->Release();
}
if (FAILED(hr))
return MAPI_E_NOT_FOUND;
else
return S_OK;
}
Bu makaledeki bilginin uygulandığı durum:
Microsoft Office Outlook 2007
Microsoft Messaging Application Programming Interface
Microsoft Exchange Development Kit 5.5
Microsoft Exchange Server 2003 Software Development Kit
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:194627
(http://support.microsoft.com/kb/194627/en-us/
)
Bu makaleyi kullanmak için ne kadar kişisel çaba harcadınız?
Çok az
Az
Orta
Fazla
Çok fazla
Bu bilgiyi geliştirmemiz için nedenleri ve bu konuda neler yapabileceğimizi paylaşın
Teşekkürler! Görüşleriniz, destek içeriğimizi geliştirmemize yardımcı olmak için kullanılmaktadır. Diğer yardım seçenekleri için, lütfen Yardım ve Destek Giriş Sayfasını ziyaret edin.