Camel – 1.2: Overview
Description: Reference for Camel-1.2: Overview

#### Overview

Camel is a mail access library that provides a complete, portable, and object-oriented framework for reading, writing, sending, and storing mail.

## Using libcamel

Call `camel_init()` before using the library, and `camel_shutdown()` when done.

The main entry point to the Camel library is the `CamelSession`, it is the main application context and must be subclassed.

## Core mail handling

- `CamelAddress`, `CamelInternetAddress`, `CamelNNTPAddress` — address parsing and encoding.
- `CamelDataWrapper`, `CamelMimePart`, `CamelMimeMessage`, `CamelMultipart` — the structured MIME message interface for reading and creating messages.
- `CamelMimeFilter` — stream processing modules for encoding, character set conversion, and more.
- `CamelMimeParser` — the core MIME parsing engine.
- `CamelStream` and subclasses — abstract I/O streams.
- `CamelOperation` — progress reporting and cancellation.

## Writing a provider

- `CamelProvider` — the provider descriptor loaded from its shared libs.
- `CamelService`, `CamelStore`, `CamelTransport` — base classes for providers.
- `CamelFolder`, `CamelFolderSummary`, `CamelFolderThread` — folder and message management.

## Miscellaneous API

- `CamelCipherContext`, `CamelGpgContext`, `CamelSMIMEContext` — encryption and signing.
- `CamelSasl` — pluggable SASL authentication mechanisms.
- `CamelFilterDriver` — rule-based message filtering.
- `CamelOfflineStore`, `CamelOfflineFolder` — offline operation support.
- `CamelVeeFolder`, `CamelVeeStore` — virtual (search-based) folders.

The `camel_mime_utils.h` header provides a wide collection of MIME and RFC 822 related utility functions used extensively throughout the library covering:

- Character class detection — a fast, table-driven set of macros for classifying individual characters according to RFC character classes (atoms, LWSP, tspecials, etc.).

- Content-Transfer-Encoding — highly optimised base64, quoted-printable, and UUencoding encoders and decoders.

- Raw header parsing — low-level tokenisers for MIME headers.

- Structured header handling — parsers and formatters for Date, Address, Content-Type, Content-Disposition, Content-ID, References, and Newsgroups headers with full RFC 2047 support.

- Header folding — utilities for folding and unfolding long header values according to RFC 2822.

Many of these functions represent years of production mail-client testing and are highly optimised. For most purposes, the higher-level interfaces on `CamelMimePart`, `CamelMimeMessage`, and `CamelInternetAddress` should be preferred.