Contact management in Omea is a complex topic, and we get a lot of questions and problem reports related to it. This page will describe our design goals for the contact subsystem, the specific implementation we have created, and some problems that still remain in it. We hope that this page will help people better understand our system.
This information should also be very helpful for developers of third-party plugins which need to make use of our contact features.
Our implementation is not set in stone. If you would like to point out problems with our current implementation or suggest ways to change it, you are welcome to do so in the jetbrains.omea.pro or jetbrains.omniamea.eap newsgroups on the news.jetbrains.com server.
- All information about message senders and recipients is only represented as links between messages and contacts. The text representation of the message sender and recipient names and addresses is not stored in every message.
- The initial mapping of (name, address) pairs to contacts is performed automatically by Omea. The user can then change the mapping if required.
- The specific name from which or to which every message was sent must be preserved, even if the name of the contact to which the message was sent is different. For example, if a message is sent to "Valued Customer <email@example.com>", it is linked to a contact named "Dmitry Jemerov", but the system must know that the message was actually addressed to "Valued Customer" and not "Dmitry Jemerov".
- When Outlook synchronization is used, operations performed with contacts in Omea must not cause any information in Outlook to be lost.
- The user can organize the contacts which are important to him in address books or categories.
Default Mapping of Names and Addresses to Contacts
The default way Omea maps names and addresses to contacts is different for the Myself contact and all other contacts. The Myself contact is the contact which describes the user of Omea. You can edit the Myself contact directly by locating it in the Contacts tab, or indirectly through the "User Information" page in Tools | Options | Omea.
In Omea Pro, the initial set of e-mail addresses of the Myself contact is filled by scanning the Sent Items folder in Outlook and looking at the "From" address of all messages in that folder. In Omea Reader, the set of Myself e-mail addresses is initially empty.
If the from/to/CC address of a message belongs to the list of e-mails of Myself contact, it is unconditionally linked to the Myself contact. If the address does not belong to the Myself contact, Omea links the message to an existing contact with the same name, and creates a new contact if one does not exist.
Ways to Modify the Default Mapping
There are two main cases when the default mapping used by Omea does not give correct results.
- A correspondent of yours is referred by several different names in the correspondence (for example, as Dmitry Jemerov and Dmitriy Jemerov). In this case, you can merge the two contacts. Merging the contacts will create a new contact with the name you choose (in version 1.0, you can only choose one of the names of the contacts you're merging), relink all the correspondence to the new contact, and delete the original contact. If the contacts share the same e-mail address, Omea will suggest to perform the merge by showing the label "There are _ contacts suggested for merging" in the contact display pane.
- You correspond with two different people who have the same name (for example, John Smith) but different e-mail addresses. In this case, you can split the contact by removing one of the e-mail addresses from it. To do so, open the contact for editing, select the e-mail address that will need to be separated, and click on "Remove". This will cause a new contact with that e-mail address to be created, and all messages with that e-mail address to be relinked to the new contact.
If you erroneously merge several contacts, you can undo the merge by using the "Extract Merged Contacts" feature (it can be accessed through an item in the contact context menu). Extracting the contacts will restore their exact state at the moment of the merge operation, and messages received after the merge will be automatically relinked to one of the extracted contacts based on the names and e-mail addresses used in the messages.
to be continued