Hello all,
I am trying to open another of my user mailbox from an exchange
administrator account, I have checked at the exchange that I have rights to
do so, I am pasting a code block, I hope it will make clear how I am editing
the fetchmail.c for myself to customize it to open another user mailbox.
... for complete code, you may please check in attachment.
char testone[8] = "testone";
/* Open User Maibox */
mapi_object_init(&obj_store);
retval = OpenUserMailbox(session, testone, &obj_store);
MAPI_RETVAL_IF(retval, retval, NULL);
/* Find Inbox default folder */
retval = GetDefaultFolder(&obj_store, &id_inbox, olFolderInbox);
MAPI_RETVAL_IF(retval, retval, NULL);
... for complete code, you may please check in attachment.
I am not able to open the mailbox for my user "testone". I thank in advance
for any help provided soon. I am attaching the code as an attachment as
well.
Kind regards,
--
Muhammad Rameez Khan
#include <libmapi/libmapi.h>
#include "defs_private.h"
#define DEFAULT_PROFDB "/tmp/profiles.ldb"
// Methods
uint32_t getTypeOfDisplay();
// Main
int main(int argc, char *argv[])
{
enum MAPISTATUS retval;
TALLOC_CTX *mem_ctx;
struct mapi_session *session = NULL;
mapi_object_t obj_store;
mapi_object_t obj_folder;
mapi_object_t obj_table;
mapi_object_t obj_message;
struct mapi_SPropValue_array props_all;
struct mapi_SPropValue_array properties_array;
struct SRowSet rowset;
struct SPropTagArray *SPropTagArray;
mapi_id_t id_inbox;
mapi_id_t *fid, *mid;
char *profname;
char *profdb;
char *id;
uint32_t olFolder = 0;
uint32_t Numerator;
uint32_t Denominator;
uint32_t i;
uint32_t count;
struct mapi_profile * profilet;
mem_ctx = talloc_named(NULL, 0, "fetchGroup");
/* Initialize MAPI */
profdb = talloc_asprintf(mem_ctx, DEFAULT_PROFDB, getenv("HOME"));
retval = MAPIInitialize(profdb);
MAPI_RETVAL_IF(retval, retval, NULL);
/* Find Default Profile */
retval = GetDefaultProfile(&profname);
MAPI_RETVAL_IF(retval, retval, NULL);
/* Log on EMSMDB and NSPI */
retval = MapiLogonEx(&session, profname, NULL);
MAPI_RETVAL_IF(retval, retval, NULL);
char testone[8] = "testone";
/* Open Another User Message Store */
mapi_object_init(&obj_store);
retval = OpenUserMailbox(session, testone, &obj_store);
if (retval != MAPI_E_SUCCESS) {
mapi_errstr("OpenMsgStore", GetLastError());
exit (1);
}
MAPI_RETVAL_IF(retval, retval, NULL);
olFolder = getTypeOfDisplay();
/* Find Inbox default folder */
retval = GetDefaultFolder(&obj_store, &id_inbox, olFolder);
MAPI_RETVAL_IF(retval, retval, NULL);
/* Open Inbox folder */
mapi_object_init(&obj_folder);
retval = OpenFolder(&obj_store, id_inbox, &obj_folder);
MAPI_RETVAL_IF(retval, retval, NULL);
/* Retrieve Inbox content table */
mapi_object_init(&obj_table);
retval = GetContentsTable(&obj_folder, &obj_table, 0x0, NULL);
MAPI_RETVAL_IF(retval, retval, NULL);
/* Create the MAPI table view */
SPropTagArray = set_SPropTagArray(mem_ctx, 0x2, PR_FID, PR_MID);
retval = SetColumns(&obj_table, SPropTagArray);
MAPIFreeBuffer(SPropTagArray);
MAPI_RETVAL_IF(retval, retval, mem_ctx);
/* Get current cursor position */
retval = QueryPosition(&obj_table, &Numerator, &Denominator);
MAPI_RETVAL_IF(retval, retval, NULL);
while ((retval = QueryRows(&obj_table, Denominator, TBL_ADVANCE, &rowset)) != MAPI_E_NOT_FOUND && rowset.cRows) {
count -= rowset.cRows;
for (i = 0; i < rowset.cRows; i++) {
mapi_object_init(&obj_message);
retval = OpenMessage(&obj_folder,
rowset.aRow[i].lpProps[0].value.d,
rowset.aRow[i].lpProps[1].value.d,
&obj_message, 0);
if (retval != MAPI_E_NOT_FOUND) {
retval = GetPropsAll(&obj_message, &properties_array);
if (retval == MAPI_E_SUCCESS) {
id = talloc_asprintf(mem_ctx, ": %"PRIX64"/%"PRIX64,
rowset.aRow[i].lpProps[0].value.d,
rowset.aRow[i].lpProps[1].value.d);
mapi_SPropValue_array_named(&obj_message,
&properties_array);
switch (olFolder) {
case olFolderInbox:
mapidump_message(&properties_array, id);
break;
case olFolderCalendar:
mapidump_appointment(&properties_array, id);
break;
case olFolderContacts:
mapidump_contact(&properties_array, id);
break;
case olFolderTasks:
mapidump_task(&properties_array, id);
break;
case olFolderNotes:
mapidump_note(&properties_array, id);
break;
case olFolderSentMail:
mapidump_message(&properties_array, id);
break;
}
talloc_free(id);
mapi_object_release(&obj_message);
}
}
}
}
/* Release MAPI objects */
mapi_object_release(&obj_table);
mapi_object_release(&obj_folder);
Logoff(&obj_store);
/* Uninitialize MAPI */
MAPIUninitialize();
talloc_free(mem_ctx);
return (0);
}
uint32_t getTypeOfDisplay()
{
printf("\nWhat do you want to display\n");
printf("=============================\n\n");
printf("Inbox : press (i)\n");
printf("Sent : press (s)\n");
printf("Outbox : press (o)\n");
printf("Contacts : press (c)\n");
printf("Appointments : press (a)\n");
printf("Notes : press (n)\n");
printf("Tasks : press (t)\n");
printf("\nEnter your choice = ");
char choice = getchar();
switch(choice)
{
case 'i':
case 'I':
return olFolderInbox;
break;
case 's':
case 'S':
return olFolderSentMail;
break;
case 'o':
case 'O':
return olFolderOutbox;
break;
case 'c':
case 'C':
return olFolderContacts;
break;
case 'a':
case 'A':
return olFolderCalendar;
break;
case 'n':
case 'N':
return olFolderNotes;
break;
case 't':
case 'T':
return olFolderTasks;
break;
}
}
_______________________________________________
devel mailing list
[email protected]
http://mailman.openchange.org/listinfo/devel