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

Reply via email to