cdo_mapi.c File Reference

MAPI subsystem related operations. More...

#include "libmapi/libmapi.h"
#include "libmapi/libmapi_private.h"

Functions

_PUBLIC_ enum MAPISTATUS GetLoadparmContext (struct mapi_context *mapi_ctx, struct loadparm_context **lp_ctx)
 
_PUBLIC_ enum MAPISTATUS MAPIInitialize (struct mapi_context **_mapi_ctx, const char *profiledb)
 
_PUBLIC_ enum MAPISTATUS MapiLogonEx (struct mapi_context *mapi_ctx, struct mapi_session **session, const char *profname, const char *password)
 
_PUBLIC_ enum MAPISTATUS MapiLogonProvider (struct mapi_context *mapi_ctx, struct mapi_session **session, const char *profname, const char *password, enum PROVIDER_ID provider)
 
_PUBLIC_ void MAPIUninitialize (struct mapi_context *mapi_ctx)
 
_PUBLIC_ enum MAPISTATUS SetMAPIDebugLevel (struct mapi_context *mapi_ctx, uint32_t level)
 
_PUBLIC_ enum MAPISTATUS SetMAPIDumpData (struct mapi_context *mapi_ctx, bool status)
 

Detailed Description

MAPI subsystem related operations.

Function Documentation

◆ GetLoadparmContext()

_PUBLIC_ enum MAPISTATUS GetLoadparmContext ( struct mapi_context mapi_ctx,
struct loadparm_context **  lp_ctx 
)

Retrieve the MAPI loadparm context for specified MAPI context

Parameters
mapi_ctxpointer to the MAPI context
lp_ctxpointer to a pointer to the loadparm context that the function returns
Returns
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_INITIALIZED or MAPI_E_INVALID_PARAMETER

References mapi_context::lp_ctx, mapi_session::mapi_ctx, and OPENCHANGE_RETVAL_IF.

◆ MAPIInitialize()

_PUBLIC_ enum MAPISTATUS MAPIInitialize ( struct mapi_context **  _mapi_ctx,
const char *  profiledb 
)

Initialize mapi context structure

This function inititalizes the MAPI subsystem and open the profile database pointed by profiledb .

Parameters
_mapi_ctxpointer to the MAPI context
profiledbprofile database path
Returns
MAPI_E_SUCCESS on success, otherwise MAPI error.
Note
Developers may also call GetLastError() to retrieve the last MAPI error code. Possible MAPI error codes are:
  • MAPI_E_NOT_INITIALIZED: MAPI subsystem has not been initialized
  • MAPI_E_NOT_ENOUGH_RESOURCES: MAPI subsystem failed to allocate the necessary resources to operate properly
  • MAPI_E_NOT_FOUND: No suitable profile database was found in the path pointed by profiledb
  • MAPI_E_CALL_FAILED: A network problem was encountered during the transaction
See also
MAPIUninitialize
Examples
fetchappointment.c, fetchmail.c, and mapi_sample1.c.

References mapi_context::dumpdata, mapi_context::ldb_ctx, mapi_context::lp_ctx, mapi_context::mem_ctx, oc_log_init_stdout(), OPENCHANGE_RETVAL_IF, OpenProfileStore(), and mapi_context::session.

◆ MapiLogonEx()

_PUBLIC_ enum MAPISTATUS MapiLogonEx ( struct mapi_context mapi_ctx,
struct mapi_session **  session,
const char *  profname,
const char *  password 
)

Create a full MAPI session

Open providers stored in the profile and return a pointer on a IMAPISession object.

Parameters
mapi_ctxpointer to the MAPI context
sessionpointer to a pointer to a MAPI session object
profnameprofile name to use
passwordpassword to use for the profile

password should be set to NULL if the password has been stored in the profile.

Returns
MAPI_E_SUCCESS on success otherwise MAPI error.
Note
Developers may also call GetLastError() to retrieve the last MAPI error code. Possible MAPI error codes are:
  • MAPI_E_NOT_INITIALIZED: MAPI subsystem has not been initialized
  • MAPI_E_NOT_ENOUGH_RESOURCES: MAPI subsystem failed to allocate the necessary resources to operate properly
  • MAPI_E_CALL_FAILED: A network problem was encountered during the transaction
See also
MAPIInitialize, OpenProfile, MapiLogonProvider
Examples
fetchappointment.c, fetchmail.c, and mapi_sample1.c.

References mapi_session::mapi_ctx, MapiLogonProvider(), PROVIDER_ID_EMSMDB, and PROVIDER_ID_NSPI.

◆ MapiLogonProvider()

_PUBLIC_ enum MAPISTATUS MapiLogonProvider ( struct mapi_context mapi_ctx,
struct mapi_session **  session,
const char *  profname,
const char *  password,
enum PROVIDER_ID  provider 
)

Initialize a session on the specified provider

Parameters
mapi_ctxpointer to the MAPI context
sessionpointer to a pointer to a MAPI session object
profnameprofile name
passwordprofile password
providerprovider we want to establish a connection on

password should be set to NULL if the password has been stored in the profile.

Supported providers are:

  • PROVIDER_ID_NSPI: Address Book provider
  • PROVIDER_ID_EMSMDB: MAPI Store provider
Returns
MAPI_E_SUCCESS on success, otherwise MAPI error.
Note
Developers may also call GetLastError() to retrieve the last MAPI error code. Possible MAPI error codes are:
  • MAPI_E_NOT_INITIALIZED: MAPI subsystem has not been initialized
  • MAPI_E_NOT_ENOUGH_RESOURCES: MAPI subsystem failed to allocate the necessary resources to operate properly
  • MAPI_E_CALL_FAILED: A network problem was encountered during the transaction
See also
MapiLogonEx, OpenProfile, LoadProfile

References mapi_session::emsmdb, emsmdb_disconnect_dtor(), LoadProfile(), Logon(), mapi_session::logon_ids, mapi_session::mapi_ctx, mapi_context::mem_ctx, mapi_session::next, mapi_session::nspi, nspi_disconnect_dtor(), OPENCHANGE_RETVAL_IF, OpenProfile(), mapi_session::profile, PROVIDER_ID_EMSMDB, PROVIDER_ID_NSPI, and mapi_context::session.

Referenced by DuplicateProfile(), and MapiLogonEx().

◆ MAPIUninitialize()

_PUBLIC_ void MAPIUninitialize ( struct mapi_context mapi_ctx)

Uninitialize MAPI subsystem

Parameters
mapi_ctxpointer to the MAPI context

This function uninitializes the MAPI context and destroy recursively the whole mapi session and associated objects hierarchy

See also
MAPIInitialize, GetLastError
Examples
fetchappointment.c, fetchmail.c, and mapi_sample1.c.

References mapi_notify_ctx::fd, mapi_session::mapi_ctx, mapi_context::mem_ctx, mapi_session::notify_ctx, OC_DEBUG, and mapi_context::session.

◆ SetMAPIDebugLevel()

_PUBLIC_ enum MAPISTATUS SetMAPIDebugLevel ( struct mapi_context mapi_ctx,
uint32_t  level 
)

Set MAPI debug level

Parameters
mapi_ctxpointer to the MAPI context
levelthe debug level to set
Returns
MAPI_E_SUCCESS on success, otherwise MAPI error.
Note
Developers may also call GetLastError() to retrieve the last MAPI error code. Possible MAPI error codes are:
  • MAPI_E_NOT_INITIALIZED: MAPI subsystem has not been initialized
  • MAPI_E_INVALID_PARAMETER: the function parameter is invalid

References _oc_log_samba_level, mapi_context::lp_ctx, mapi_session::mapi_ctx, mapi_context::mem_ctx, and OPENCHANGE_RETVAL_IF.

◆ SetMAPIDumpData()

_PUBLIC_ enum MAPISTATUS SetMAPIDumpData ( struct mapi_context mapi_ctx,
bool  status 
)

Enable MAPI network trace output

Parameters
mapi_ctxpointer to the MAPI context
statusthe status

possible status values/behavior:

  1. true: Network traces are displayed on stdout
  2. false: Network traces are not displayed on stdout
Returns
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_INITIALIZED

References mapi_context::dumpdata, mapi_session::mapi_ctx, and OPENCHANGE_RETVAL_IF.


Creative Commons License
Creative Commons Attribution icon Creative Commons Share Alike icon
This content is licensed under the Creative Commons
Attribution ShareAlike License v. 3.0:
http://creativecommons.org/licenses/by-sa/3.0/