> For the complete documentation index, see [llms.txt](https://edissyum.gitbook.io/open-capture-for-mem/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://edissyum.gitbook.io/open-capture-for-mem/technique/capture-de-mail.md).

# Capture de mail

Si nécessaire, **Open-Capture For MEM** peut capter des emails directement depuis votre boîte mail. Le corps du mail ainsi que les pièces jointes seront récupérées. Plusieurs options de connexions sont possibles afin de garantir un niveau de sécurité maximale.

* **IMAP** classique, nécessitant un nom d'hôte, un port, un login ainsi qu'un mot de passe.
* **OAuth**, ou authentification moderne. Cette dernière nécessite une intervention du client, avec une procédure fournie par [**Edissyum Consulting**](https://open-capture.com/contact/)**.**
* **GraphQL**, la plus recommandée aujourd'hui. Elle nécessite également une intervention du client, avec une procédure fournie par [**Edissyum Consulting**](https://open-capture.com/contact/)**.**

Dans le fichier de configuration de la capture de mail, vous aurez la possibilité de créer autant de processus de capture que vous le souhaitez. Un processus par défaut est déjà paramétré, prénommé `[MAIL_1]`.&#x20;

Le fichier de configuration est situé, à partir de la racine d'**Open-Capture For MEM**, dans `src/config/mail.ini`.

{% hint style="info" %}
Pour créer un processus, copiez-collez le bloc entier, et pensez à changer le nom du processus. Aucun espace n'est autorisé dans le nom du bloc
{% endhint %}

En fonction de la méthode de connexion choisie, vous aurez à remplir le bloc correspondant dans le fichier de configuration de la capture de mail. La méthode de connexion se choisit à l'intérieur du processus, via le paramètre `auth_method`.

{% tabs %}
{% tab title="GraphQL" %}

```ini
[GRAPHQL]
; DO NOT TOUCH
grant_type    = client_credentials
scope         = https://graph.microsoft.com/.default
users_url     = https://graph.microsoft.com/v1.0/users
message_url   = https://graph.microsoft.com/v1.0/me/messages
get_token_url = https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token
; END DO NOT TOUCH
client_id     =
tenant_id     =
client_secret =
```

{% endtab %}

{% tab title="Oauth" %}

```ini
[OAUTH]
authority   = https://login.microsoftonline.com/
scopes      = https://outlook.office.com/.default
tenant_id   =
client_id   =
secret      =
```

{% endtab %}

{% tab title="IMAP" %}
La configuration de l'authentification classique se passe également à l'intérieur du processus. Il est donc possible de paramétrer plusieurs boîtes différentes

```ini
[MAIL_1]
; basic, oauth, exchange or graphql
auth_method             = basic
host                    = votre.serveur.mail.fr
port                    = 993
; SSL or STARTTLS or False
secured_connection       = SSL

login                   =
; Only for basic authentication. If you have $ in your password, you must double it
password                =
```

{% endtab %}
{% endtabs %}

Afin de connaître les identifiants techniques des dossiers dans lequel capturer et archiver les e-mails, des scripts sont présents pour lister tous les dossiers d'une boîte mail. À partir de la racine d'**Open-Capture For MEM**, les scripts sont présents dans le dossier `scripts/MailCollect`. Dans chaque script, il suffit de mettre les mêmes informations que dans le fichier de configuration de la capture de mail.

Afin d'avoir la liste des dossiers, il ne vous reste plus qu'à exécuter le script python

{% tabs %}
{% tab title="check\_folders\_graphql.py" %}

```python
graphql_args = {
    "get_token_url": "https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token",
    "users_url": "https://graph.microsoft.com/v1.0/users",
    "scope": "https://graph.microsoft.com/.default",
    "grant_type": "client_credentials",
    "tenant_id": "",
    "client_id": "",
    "client_secret": "",
    "login": "",
}

```

```bash
python3 scripts/MailCollect/check_folders_graphql.py
```

{% endtab %}

{% tab title="check\_folders\_oauth.py" %}

```python
args = {
    "authority": "https://login.microsoftonline.com/",
    "scopes": ["https://outlook.office365.com/.default"],
    "tenant_id": "",
    "client_id": "",
    "secret": "",
    "host": "outlook.office365.com",
    "login": "",
}
```

```bash
python3 scripts/MailCollect/check_folders_oauth.py
```

{% endtab %}

{% tab title="check\_folders.py" %}

```python
hostname = 'votre.serveur.mail.fr'
port = 993
isSSL = True
isSTARTTLS = False
login = ''
password = ''
```

```bash
python3 scripts/MailCollect/check_folders.py
```

{% endtab %}
{% endtabs %}

## Liste des paramètres d'un processus

En dehors de la partie de connexion, voici la liste des paramètres et fonctionnalités accessibles lors de la capture de mail

<table><thead><tr><th width="230"></th><th></th></tr></thead><tbody><tr><td>is_form</td><td>Si <code>True</code>, vérification si le mail contient un formulaire. Plus d'informations dans la page <a href="/pages/Zbp04VUAF0y8jsQixqoK">Capture de formulaire</a>.</td></tr><tr><td>generate_chrono</td><td>Si <code>True</code>, MEM Courrier générera un numéro de chrono lors de l'insertion</td></tr><tr><td>force_utf8</td><td>Si <code>True</code>, force l'encodage du mail en UTF-8</td></tr><tr><td>add_mail_headers_in_body</td><td>Si <code>True</code>, rajoute dans le corps du mail les informations basiques du mail (sujet, destinateur, expéditeurs, copies).</td></tr><tr><td>priority_to_mail_subject</td><td>Si <code>True</code>, on utilise le sujet du mail et aucune recherche dans le corps du mail n'est effectuée.</td></tr><tr><td>priority_to_mail_date</td><td>Si <code>True</code>, on utilise la date du mail et aucune recherche dans le corps du mail n'est effectuée.</td></tr><tr><td>priority_to_mail_from</td><td>Si <code>True</code>, on utilise l'adresse email de l'expéditeur et aucune recherche dans le corps du mail n'est effectuée.</td></tr><tr><td>import_only_attachments</td><td>Si <code>True</code>, import uniquement des pièces jointes. Chaque fichier PDF deviendra un courrier dans MEM Courrier.</td></tr><tr><td>separator_qr</td><td>Nécessite l'activation de <strong>importOnlyAttachments</strong>. Si <code>True</code>, séparation du fichier via l'utilisation des séparateurs MEM Courrier.</td></tr><tr><td>extensions_allowed</td><td>Liste des extensions de pièces jointes autorisées à être intégrée dans MEM Courrier.</td></tr><tr><td>store_unique_id_already_processed</td><td>Si <code>True</code>, stockage des identifiants unique des mails. Permet d'éviter les erreurs si la boîte mail est pleine, par exemple.</td></tr><tr><td>folder_to_crawl</td><td>Identifiant technique du dossier dans lequel <strong>Open-Capture For MEM</strong> vient capter les e-mails.</td></tr><tr><td>folder_destination</td><td>Identifiant technique du dossier dans lequel <strong>Open-Capture For MEM</strong> vient déplacer les e-mails après traitement.</td></tr><tr><td>action_after_process</td><td>Action à effectuer après traitement du mail (<code>none</code>, <code>move</code> ou <code>delete</code>)</td></tr><tr><td>e_reconciliation</td><td>Nécessite l'activation de <strong>import_only_attachments.</strong> Si <code>True</code>, recherche d'un QR Code dans les PDF en pièces jointe pour effectuer une réconciliation automatique</td></tr><tr><td>chrono_regex</td><td>REGEX permettant la recherche d'un numéro de chrono dans l'objet ou le corps du mail. Permet de lier un mail à un courrier déjà existant dans MEM Courrier.</td></tr><tr><td>e_link_status</td><td>Forcer un nouveau status pour le mail inséré dans MEM Courrier si un numéro de chrono à était trouvé.</td></tr><tr><td>retrieve_metadata</td><td>Si <code>True</code> et si un numéro de chrono à était trouvé, récupération du <code>doctype</code> de la <code>destination</code> et du <code>dest_user</code> pour le mail à insérer.</td></tr><tr><td>from_is_reply_to</td><td>Si <code>True</code>, utilisation du <code>Reply-To</code> à la place du champs<code>from</code>.</td></tr><tr><td>custom_mail_from</td><td>Identifiant du champ personnalisé MEM Courrier où stocker les informations sur le destinataire.</td></tr><tr><td>custom_mail_to</td><td>Identifiant du champ personnalisé MEM Courrier où stocker les informations sur l'expéditeur.</td></tr><tr><td>custom_mail_cc</td><td>Identifiant du champ personnalisé MEM Courrier où stocker les informations sur les personnes en copies.</td></tr><tr><td>custom_mail_reply_to</td><td>Identifiant du champ personnalisé MEM Courrier où stocker les informations sur la personne dans le champ "Répondre à".</td></tr><tr><td>custom_fields</td><td>Champs JSON permettant de stocker une valeur en dur pour un champ personnalisé MEM Courrier. (ex : {"3": "Courrier"}).</td></tr></tbody></table>

## Mise en place de la tache planifiée

Afin que le script de capture de mail puisse se lancer, il va falloir le mettre en tâche planifiée. Pour cela rien de plus simple avec les crontab. Par exemple, la crontab ci-dessous va vous lancer la capture de mail toutes les 5 minutes, de 8h à 18h du lundi au vendredi. Vous pouvez bien entendu la modifier au besoin. Il ne vous reste plus qu'à lancer la commande crontab -e et à rajouter cette ligne.

{% code title="crontab -e" %}

```bash
*/5 8-18 * * 1-5   /opt/edissyum/opencaptureformem/scripts/launch_MAIL.sh >/dev/null 2>&1
```

{% endcode %}

Pour finir et afin de nettoyer les fichiers de chaque capture de mails, vous pouvez mettre en place le script de nettoyage suivant, toujours via les taches planifiées.

{% code title="crontab -e" %}

```basic
0 2 * * 1-5   /opt/edissyum/opencaptureformem/scripts/MailCollect/clean.sh >/dev/null 2>&1
```

{% endcode %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://edissyum.gitbook.io/open-capture-for-mem/technique/capture-de-mail.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
