Discutions autour de la fonctionnalité réponse par courriels

Fonction reply to email de GitHub

a marqué ce sujet comme résolu.

Bonjour,

J'ai créé ce sujet pour discuter d'une fonctionnalité que j'aimerais voir apparaître sur la plateforme, c'est la possibilité de répondre par email aux notifications. Par exemple, je reçois par email, une notification de l'ajout d'un message sur un sujet. La nouvelle fonctionnalité permettrait si je répond à ce mail de poster directement ma réponse dans le sujet. Pour une explication plus détaillé, je vous renvois sur la documentation GitHub, qui est un outil qui à la même fonctionnalité.

Le message est découpé en deux parties, la partie technique et la partie fonctionnelle. Vous pouvez donner votre avis sur la partie fonctionnelle en omettant la partie technique.

Discution technique

J'ai trouvé une astuce pour avoir la fonctionnalité sans avoir à installer un serveur de mail sur le serveur zeste de savoir.

Le système pour fonctionner a besoin de deux nouvelles librairies (compatible toutes deux python 3): django-mailbox et Email Reply Parser. Je vous rassure, y'a juste à remplir 3 champs d'un formulaire dans l'administration django pour faire marcher la fonctionnalité.

Comment ça marche pour répondre à une notification sur un sujet du forum?:

  • à l'envois de la notification, on ajoute dans l’entête du mail, un champ 'Reply-to', dans ce champ, une adresse email composé comme ceci: noreplyzestedesavoir+<id du sujet du forum>-reponsesujet-<token de securité>@gmail.com. Le token est là pour la sécurité mais aussi pour lié l'utilisateur. Avant d'envoyer, le mail, il est bien sur obligatoire d'enregistrer le token dans la base de données et de le lier avec l'utilisateur.

  • à la réception, l'utilisateur clique sur le bouton 'répondre', son client mail, utilise le champ, 'Reply-to' pour remplir l'adresse du destinataire. L'utilisateur écrit la réponse qu'il souhaite dans le message et clique sur envoyer.

  • Les serveurs de Gmail à la réception du mail, traite le mail et envois à l'adresse noreplyzestedesavoir@gmail.com.

  • django-mailbox périodiquement, relève les mails de l'adresse noreplyzestedesavoir@gmail.com. Dans le code, c'est juste ajouter une nouvelle annotation sur une méthode. Dans cette méthode, on traite le mail en récupérant le token et l'id. Grâce à la librairie, Email Reply Parser on peut récupérer la réponse à ajouter dans le forum.

Au niveau du code, ça donne un truc comme ça :

1
2
3
4
5
6
7
# Génération du token + enregistrement dans la base
...
# Envois du mail
msg = EmailMultiAlternatives(subject, message_txt, from_email, [email_destinataire],
                                                 headers={'Reply-To': 'noreplyzestedesavoir+' + 
                                                                      str(n_topic.id)
                                                                      + '-reponsesujet-' + token}).

dans le setting.py,

1
2
INSTALLED_APPS += (
    'django_mailbox')

dans le model.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
@receiver(message_received)
def get_new_mail(sender, message, **args):
    for address in message.to_header.split(','):
        if address:
            m = re.search('noreplyzestedesavoir+(.+?)-(.+?)-(.+?)@gmail.com', address)
            if m:
              if m.group(2) == '-reponsesujet':
                id_topic = m.group(1)[1:]
                token = m.group(3)

                response = EmailReplyParser.read(message.text).fragments[0].content

                topic = get_object_or_404(PrivateTopic, pk=(int(id_topic)))
                send_message_forum(topic, response)

Installation

L'installation des deux dépendances peuvent être mise dans le requirements.txt. Il faut configurer django-mailbox , la doc est trés bien faite, c'est juste remplir trois champs dans l'admin django. L'autre lib s'utilise sans configuration.

Discution fonctionnelle

Pour qu'il puisse répondre par mail, il faut que l'utilisateur possède l'historique du sujet par mail. Le premier souci est quand le sujet génère plusieurs dizaines de messages. Il va donc être obligé de recevoir dix messages avec à chaque fois ce que les autres ont posté.

Le deuxième souci est la confidentialité, quand le sujet est publique aucun souci mais pour les MP, c'est une autre histoire. On est obligé de faire passer le(s) dernier(s) message(s) par mail. On ne peut garantir la sécurité des échanges par mail facilement (Analyse du mail par le gouvernement, NSA puis par les serveurs de mail, plus les FAI). La question doit t-on se limiter aux contenus publique: réponse aux tutoriels, articles pour l'auteur et pour les forums ?

Votre avis ?

Pour ceux qui ont envie de lire:

+1 -0

Merci d'ouvrir la discussion (!) à ce sujet. Moi aussi je serais très intéressé par la possibilité d'interagir avec le forum directement dans mon client mail. Je n'ai pas d'avis sur le détail de ta proposition technique. En revanche, je m'interroge : est-on obligé de réinventer la roue à ce niveau ? N'y a-t-il pas déjà des logiciels voire des protocoles qui conviendraient déjà très bien (par exemple NNTP) et qui permettraient de régler le problème de l'historique des messages ?

Concernant la confidentialité, je ne sais pas si c'est très pertinent ici. Personnellement je pense que les MP devraient aussi être accessibles par mail.

Merci d'ouvrir la discussion (!) à ce sujet. Moi aussi je serais très intéressé par la possibilité d'interagir avec le forum directement dans mon client mail. Je n'ai pas d'avis sur le détail de ta proposition technique. En revanche, je m'interroge : est-on obligé de réinventer la roue à ce niveau ? N'y a-t-il pas déjà des logiciels voire des protocoles qui conviendraient déjà très bien (par exemple NNTP) et qui permettraient de régler le problème de l'historique des messages ?

Je connais pas, je regarde ça cette semaine.

Concernant la confidentialité, je ne sais pas si c'est très pertinent ici. Personnellement je pense que les MP devraient aussi être accessibles par mail.

katana

Très bien, je m'attendais pas à cette réponse. On verra comment on fait un petit sondage sur la question.

Où on peut aussi passer un service genre sendgrid… mais 400 mails par jour, c'est peut-être limitant :/

Talus

Faudrait voir avec SpaceFox, j'ai peur que ça soit pas assez. J'avais vu aussi mailgun qui autorise 10 000 par mois (contre 12 000 pour ta solution).

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte