Configuration

Imap-CLI need to have information about your IMAP account to connect to it. And to do so, it provide several ways to retrieve those configurations.

Loading default config

Load an empty configuration dictionnary with default values listed in file config-example.ini:

from imap_cli import config
conf = config.new_context()

This is usually not what you want, this configuration method is used by unit tests

Loading config from configuration file

If you intend to use command line tools, this is definitely the best method.

Each command line tools will provide the options -c, –config-file in order to let you specify your very own config file. It is also helpful to have multiple file in case you have multiple IMAP account.

There is a default configuration file wich will be used if no one is specified, it’s ~/.config/imapcli.

This file can contains the following options:

[imap]
hostname = imap.example.org
username = username
password = secret
ssl = True

[display]
format_list =
    ID:         {mail_id}
    Flags:      {flags}
    From:       {from}
    To:         {to}
    Date:       {date}
    Subject:    {subject}
format_thread = {uid} {subject} <<< FROM {from}
format_status = {directory:>20} : {count:>5} Mails - {unseen:>5} Unseen - {recent:>5} Recent
limit = 10

Warning

Don’t forget to set correct permission on these files ! It will store your IMAP Account password, allow only your own user to read this file

Loading config from python code

If you need to connect and retrieve mail information with a python script, you can load any config file

new_context_from_file(config_filename=None, section=None)

Open and read config_filename (~/.config/imapcli by default) and parse configuration from it.

Example:

from imap_cli import config
config_file = '~/.config/imapcli'
conf = config.new_context_from_file(config_file)

You can also load a single section of this configuration file:

from imap_cli import config
config_file = '~/.config/imapcli'
conf = config.new_context_from_file(config_file, section='imap')

New in version 0.1.

But you can also use a python sructure to store your information and load it from a dict. In fact, config it’s just a dict, the following method will just “complete” your dict.

new_context(config=None)

Read configuration from config dict.

Example:

from imap_cli import config
conf = config.new_context({
    'hostname': 'another.imap-server.org',
    'password': 'another.secret',
    })

New in version 0.1.

Every missing key will take the default value.