1. Introduction

While Python-MAPI provides complete Python bindings to interface with Kopano Core, it is not very easy to use. Most importantly, this is because it really operates at the MAPI level, which is to say, it is very low-level and often strange. When looking at programs written using Python-MAPI, one easily gets the impression that a much nicer abstraction layer should be possible.

Python-Kopano aims to provide a high-level, more “Pythonic”, abstraction layer above Python-MAPI. While internally it still uses Python-MAPI, it tries to hide as much of the details as possible from the developer, while still allowing her to dive down into MAPI if needed. Simply put, its main goal is to try and bring the productivity often associated with the Python language itself to developing against Kopano Core.

More specifically, some of the goals of Python-Kopano are as follows:

  • To be fully object-oriented, pythonic, layer above MAPI
  • To be usable for many common system administration tasks
  • To provide full access to the underlying MAPI layer if needed
  • To return all text as unicode strings
  • To return/accept binary identifiers in readable (hex-encoded) form
  • To raise well-described exceptions if something goes wrong

1.1. Target audience

This document is mainly targeted at Python developers looking to interact with Kopano Core. MAPI knowledge is not required in most cases, although it can be useful to have at some prior experience with basic MAPI concepts such as properties.