Synchronisation des e-mails externes dans Creme
#1
Bonjour,

Je tente désespéramment de configurer la synchro de mail mais rien à faire.

Niveau envoie, pas de soucis.

Dans la configuration j'ai mis :


Code :
# CRUDITY -----------------------------------------------------------------------
# EMail parameters to sync external emails in Creme
# email address where to send the emails to sync (used in email templates)
#  eg: creme@cremecrm.org
CREME_GET_EMAIL              = 'monadresse@site.fr'
# server URL (eg: pop.cremecrm.org)  -- only pop supported for now.
CREME_GET_EMAIL_SERVER      = 'pop.ionos.fr'
CREME_GET_EMAIL_USERNAME    = 'monadresse@site.fr'
CREME_GET_EMAIL_PASSWORD    = 'monmotdepasse'
CREME_GET_EMAIL_PORT        = 995
CREME_GET_EMAIL_SSL          = True  # True or False
# PEM formatted file that contains your private key (only used if CREME_GET_EMAIL_SSL is True).
CREME_GET_EMAIL_SSL_KEYFILE  = ''
# PEM formatted certificate chain file (only used if CREME_GET_EMAIL_SSL is True).
CREME_GET_EMAIL_SSL_CERTFILE = ''

Y a t'il autre chose à configurer?
Pour info je n'ai aucun message d'erreur dans les logs.

Edit : et question bête mais est il possible de le faire en imap?

Merci d'avance
  Répondre
#2
Si cette fonctionnalité vous intéresse je vous conseille d'attendre Creme 2.4 qui devrait sortir d'ici quelques mois (on vise décembre, mais aucune promesse, ça sort quand c'est prêt). La synchronisation des e-mails externes a été sortie de l'app "crudity" pour aller dans l'app "emails" et a surtout été refaite en profondeur, avec du code meilleur, plu robuste, mieux testé, et moult nouvelles fonctionnalités :
- la configuration des serveurs se fait graphiquement (et plus avec les settings en python)
- IMAP4 est géré en plus (seul POP3 l'est avec Creme2.3)
- les e-mails sont 'sandboxés', et créés seulement quand vous les validez.
- vous pouvez choisir d'ignorer les pièces jointes.
- le lien avec les fiches Contacts/Sociétés concernés est fait.
- ...

Si vous en avez le temps, l'envie et les compétences vous pouvez essayez d'installer une instance de test basée sur la version de développement de Creme, afin de voir la nouvelle synchronisation des e-mails, et pourquoi pas nous faire des retours (note: il est normal d'avoir des messages en anglais, les traductions sont compilées au moment des passages en beta/rc/release). Sinon il faudra attendre la release pour en profiter.

PS: avez vous bien lancé le manager de jobs, qui va interroger les serveurs mails de manière régulière ?
  Répondre
#3
Bonjour,

Merci pour ce retours,

A priori j'ai bien les jobs qui fonctionnent.

Code :
System jobs:
- Synchroniser les données externes envoyées à Creme (id=6) -> next run at 15-09-2022 09:34:12
- Générer les documents récurrents (id=4) -> next run at 15-09-2022 10:04:12
- Mémentos (id=2) -> next run at 15-09-2022 10:04:12
- Envoyer les e-mails des campagnes (id=8) -> next run at 15-09-2022 10:04:12
- Envoyer les e-mails pour les approches commerciales (id=5) -> disabled
- Envoyer les e-mails des messages utilisateurs (id=3) -> next run at 15-09-2022 10:04:12
- Envoyer les fiches e-mail (id=7) -> next run at 15-09-2022 10:04:12
- Nettoyeur de fichiers temporaires (id=1) -> next run at 16-09-2022 09:04:12
No user job at the moment.

Pour information, je suis passé par la version docker que j'ai installé via un docker compose que j'ai créé.

Edit:

J'ai fait la mise à jour vers là 2.3.6 et j'ai maintenant :

Code :
/srv/creme/venv/lib/python3.6/site-packages/creme/crudity/fetchers/pop.py:76: DeprecationWarning: keyfile and certfile are deprecated, use a custom context instead
  settings.CREME_GET_EMAIL_SSL_CERTFILE,
[2022-09-15 10:44:43] ERROR - creme.creme_core.creme_jobs.base : b'-ERR invalid sequence number: "b\\\'1\\\'"'
Traceback (most recent call last):
  File "/srv/creme/venv/lib/python3.6/site-packages/creme/creme_core/creme_jobs/base.py", line 119, in execute
    self._execute(job)
  File "/srv/creme/venv/lib/python3.6/site-packages/creme/crudity/creme_jobs.py", line 57, in _execute
    count = len(self.crudity_registry.fetch(user))
  File "/srv/creme/venv/lib/python3.6/site-packages/creme/crudity/registry.py", line 407, in fetch
    for data in fetcher_multiplex.fetch():
  File "/srv/creme/venv/lib/python3.6/site-packages/creme/crudity/registry.py", line 90, in fetch
    data.extend(fetcher.fetch())
  File "/srv/creme/venv/lib/python3.6/site-packages/creme/crudity/fetchers/pop.py", line 171, in fetch
    client.dele(message_number)
  File "/usr/local/lib/python3.6/poplib.py", line 256, in dele
    return self._shortcmd('DELE %s' % which)
  File "/usr/local/lib/python3.6/poplib.py", line 176, in _shortcmd
    return self._getresp()
  File "/usr/local/lib/python3.6/poplib.py", line 152, in _getresp
    raise error_proto(resp)
poplib.error_proto: b'-ERR invalid sequence number: "b\\\'1\\\'"'
/usr/local/lib/python3.6/socket.py:657: ResourceWarning: unclosed <ssl.SSLSocket fd=7, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('172.22.0.3', 38854), raddr=('212.227.15.141', 995)>
  self._sock = None


Edit2 :
résolu en modifiant le fichier pop.py tel que dans ce message : https://www.cremecrm.com/forum/printthread.php?tid=154

Avant :

Code :
Code :
if delete:

               # We delete the mail from the server when treated

               client.dele(message_number)

Après modification :

Code :
Code :
if delete:

               # We delete the mail from the server when treated

               client.dele(int(message_number))

Le souci reste que cela supprime les mails sur le serveur de messagerie à cause du pop.
  Répondre
#4
Citation :résolu en modifiant le fichier pop.py tel que dans ce message [...]


Oui cette partie du code date des tout débuts de Creme, et avait plus à voir avec un prototype qu'autre chose. Et faute d'utilisateur elle n'a pas forcément reçue tout l'amour qu'il aurait fallut. La nouvelle version devrait être plus fiable  ; après il semblerait que les différentes implémentations des serveurs e-mails fassent parfois des choses bizarres/non standard, autant en POP qu'en IMAP, donc les retours seront toujours les bienvenus. Je reporterai la modification que vous m'indiquez sur la branche 2.3.


Citation :Le souci reste que cela supprime les mails sur le serveur de messagerie à cause du pop.


Oui c'est le comportement souhaité. Vous avez une boite mail dédiée à la synchronisation avec Creme ; si vous envoyez un e-mail avec votre client e-mail (et pas Creme évidemment, sinon vous avez déjà le mail en tant que fiche), vous mettez cette adresse de synchronisation en CC/BCC, et le mail sera récupéré par Creme, qui supprime le mail devenu inutile. Si l'adresse de synchronisation est en CC, et que votre correspondant fait un "répondre à tous", le mail de réponse sera aussi synchronisé. Et sinon vous pouvez le forwarder à l'adresse de synchronisation (mais ce dernier cas est vraiment mieux géré dans la nouvelle version).

Tout ceci n'était pas très bien documenté, mais la nouvelle version explique ça dans l'IHM directement.

J'espère avoir éclairé vos questions.

Bonne continuation !
  Répondre
#5
Je continue dans mes questions concernant la synchro,

A quoi sert cette section?

Code :
CRUDITY_BACKENDS = [
    {
        'fetcher': 'email',
        # 'input': 'raw',
        'input': 'raw',
        # 'method': 'create',
        'method': 'create',
        'model': 'emails.entityemail',
        'password': '',
        'limit_froms': (),
        'in_sandbox': True,
        'body_map': {},
        'subject': '*',
    },
]

Et je ne sais pas pourquoi mais pas mal de mails ne sont pas ratachés
Merci d'avance!
  Répondre
#6
L'app "crudity" (c'est une référence à https://fr.wikipedia.org/wiki/CRUD ) va chercher des sources de données (actuellement des e-mails POP ou des fichiers en local sur le serveur, mais c'est le principe d'abstraction des backends que de pouvoir étendre les types de sources) et va s'en servir pour créer/modifier/supprimer des fiches Creme (même si seule la création est implémentée dans l'implémentation actuelle). C'est à ça que sert le settings CRUDITY_BACKENDS, à dire "je veux créer des Contacts en recevant des e-mails...". Et jusqu'à Creme 2.3 compris, la synchronisation e-mail était un cas particulier de ce système (au lieu de lire le contenu du mail reçu pour définir les champs d'une entité, on créé une fiche Creme Email avec le contenu du mail reçu). Et comme dans un message précédant, dans Creme 2.4 la synchronisation a été sortie de l'app "crudity", car ça n'avait pas vraiment beaucoup de sens ou d’intérêt de faire comme ça.

Dans le futur l'app "crudity" devrait elle aussi recevoir une grosse mise-à-jour, afin de pouvoir tout configurer en visuel plutôt que dans les settings (ce qui évitera d'avoir à connaître les nom des champs), de gérer IMAP, de gérer les modifications & suppressions de fiches..

Pour ce qui est de la signification des divers champs de CRUDITY_BACKENDS, je vous invite à lire les commentaires au dessus dans settings.py (si vous avez une question plus précise je pourrai y répondre, mais je ne mais pas réécrire toute la documentation ici).

Bon week-end !
  Répondre
#7
Bonsoir,

Merci beaucoup pour ces précisions.

Concernant la 2.4, y a t'il un lien pour tester?
Sera t'elle prévue en docker?

Bonne soirée et merci pour la réactivité!
  Répondre
#8
Pour Creme 2.4, les sources sont ici: https://github.com/HybirdCorp/creme_crm (il faut donc récupérer via git ; rien de très compliqué en soi mais ça peut faire peur évidemment).

Lorsqu'elle sera releasée, il y aura une image Docker de démo (ça devrait être toujours le cas pour les releases à l'avenir).

Bonne journée !
  Répondre
#9
Merci!

J'avoue que je ne suis pas encore à l'aise avec git et crème, j'ai récupéré le dépot mais je ne sais pas comment lancer la v2.4. J'aurais plus de temps pour m'y pencher d'ici 15 jours, je reviendrais à ce moment là!
  Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)