Contact collection

Motivation

Many modern applications combines email and contacts.

We want recipients of emails sent by a user to automatically be added to this user contacts, for convenience. This should even be performed when a user sends emails via SMTP for example using thunderbird.

Design

The idea is to send AMQP messages holding information about mail envelope for a traitment via a tierce application.

Configuration

We can achieve this goal by combining simple mailets building blocks.

Here is a sample pipeline achieving aforementioned objectives :

<mailet match="SenderIsLocal" class="ContactExtractor">
    <attribute>extractedContacts</attribute>
</mailet>
<mailet match="All" class="AmqpForwardAttribute">
    <uri>amqp://${env:JAMES_AMQP_USERNAME}:${env:JAMES_AMQP_PASSWORD}@${env:JAMES_AMQP_HOST}:${env:JAMES_AMQP_PORT}</uri>
    <exchange>collector:email</exchange>
    <attribute>extractedContacts</attribute>
</mailet>

A sample message looks like:

{
	"userEmail": "sender@james.org",
	"emails": ["to@james.org"]
}