{}const=>[]async()letfn</>var
DéveloppementPython

Automatisation de la routine : écrire un bot en Python pour des réponses automatiques aux e-mails

📩 En Python, vous pouvez facilement écrire un bot qui répondra automatiquement aux messages entrants. Dans cet article, nous allons analyser un exemple de code, montrer le scénario de base et des idées d'amélioration afin de libérer votre temps pour des tâches plus importantes

К

Kodik

Auteur

5 min de lecture

Pourquoi est-ce nécessaire en 2025 ? 🕒

Le courrier reste le principal canal de communication avec les clients et les partenaires. En fait, 60 à 80 % des e-mails entrants sont des courriels de routine : des confirmations, des questions répétitives, « bonjour, dites-moi... ». Le bot libère des heures par semaine, accélère la réponse à l'utilisateur et réduit la probabilité de « dépôt » des lettres.

Ce que nous allons construire ⚙️

  • Mini-bot sur IMAP + SMTP pour une réponse automatique de base.

  • Itinéraire par mots-clés (par exemple, « paiement », « coopération »).

  • Résumé « comment passer » à Gmail API (OAuth 2.0) pour la fiabilité.

  • Plan de déploiement : cron / APScheduler, journalisation, Docker.

  • Sécurité minimale : .env, mot de passe de l'application, limitation de fréquence.

Ci-dessous, la version de travail minimale.

# pip install python-dotenv
import os, imaplib, smtplib, email
from email.mime.text import MIMEText
from dotenv import load_dotenv

load_dotenv()
IMAP = os.getenv("IMAP_SERVER", "imap.gmail.com")
SMTP = os.getenv("SMTP_SERVER", "smtp.gmail.com")
EMAIL = os.getenv("EMAIL_ADDRESS")
PASS  = os.getenv("EMAIL_PASSWORD")  # Mot de passe d'application pour Gmail

def send_reply(to_addr:str, subject:str):
    msg = MIMEText("Thank you! We have received your letter and will reply as soon as possible.")
    msg["Subject"] = f"Re: {subject or ''}".strip()
    msg["From"] = EMAIL
    msg["To"] = to_addr
    with smtplib.SMTP_SSL(SMTP, 465) as smtp:
        smtp.login(EMAIL, PASS)
        smtp.sendmail(EMAIL, [to_addr], msg.as_string())

with imaplib.IMAP4_SSL(IMAP) as imap:
    imap.login(EMAIL, PASS)
    imap.select("INBOX")
    status, data = imap.search(None, '(UNSEEN)')
    ids = data[0].split()
    for msg_id in ids:
        _, raw = imap.fetch(msg_id, "(RFC822)")
        msg = email.message_from_bytes(raw[0][1])
        sender = email.utils.parseaddr(msg.get("From",""))[1]
        subj   = msg.get("Subject","")
        if sender:
            send_reply(sender, subj)
        # marquer comme lu
        imap.store(msg_id, '+FLAGS', '\\Seen')

💡 Conseil : pendant les tests, ajoutez « mode sec » (dry-run) pour enregistrer les actions au lieu d'un envoi réel.

🔥 100 000+ étudiants déjà avec nous

Marre de lire la théorie ?
Il est temps de coder !

Kodik — une appli où tu apprends à coder par la pratique. Mentor IA, leçons interactives, projets réels.

🤖 IA 24/7
🎓 Certificats
💰 Gratuit
🚀 Commencer
Ont rejoint aujourd'hui

Plus intelligent : réponses par mots-clés 🧭

La logique la plus simple : nous regardons le sujet et le corps de la lettre, nous choisissons un modèle de réponse.

KEYMAP = {
    "payment": "Regarding payment: the invoice has been sent, the terms are 1-2 banking days. If you need an act, please reply to this letter.",
    "cooperation": "Thank you for your interest! Please write briefly about your audience and format, and we will get back to you with a proposal.",
    "Technical support": "Describe the playback steps and send screenshots/logs — we will help you promptly."
}
DEFAULT = "Thank you for your letter! We are in touch and will get back to you as soon as possible."

def choose_reply(subject:str, body:str) -> str:
    text = f"{subject} {body}".lower()
    for key, template in KEYMAP.items():
        if key in text:
            return template
    return DEFAULT

Vous pouvez étendre à un simple « intent » : rechercher plusieurs clés, compter le « poids » des correspondances et choisir le meilleur modèle.

Déploiement et exploitation 🚀

  • Planificateur: cron, APScheduler ou systemd-timer.

  • Docker: fixez la version de Python et les dépendances, connectez .env comme secret.

  • Journaux: niveau INFO pour un fonctionnement normal et WARNING/ERROR pour les pannes ; envoyez les erreurs dans Telegram/Slack.

  • Limitation de fréquence: ne répondez pas plus d'une fois par jour à l'adresse ; conservez un cache des « réponses des dernières 24 heures ».

  • A/B: testez les textes des réponses automatiques et l'objet de la lettre — cela affecte la communication ultérieure.

Sécurité et éthique 🔒

  • Gardez les secrets dans .env, utilisez App Password ou OAuth 2.0, ne validez pas les jetons dans le dépôt.

  • Ajoutez « vous avez reçu une réponse automatique » et un moyen de contacter la personne dans la réponse.

  • Gérez une liste blanche de domaines/adresses pour les actions automatiques ; laissez les e-mails controversés pour une analyse manuelle.

  • Respectez la politique du fournisseur de messagerie et la loi sur les données personnelles.

📊 Que peut faire un bot de messagerie en Python

Scénario

Ce que fait le bot

Avantages

Réponse automatique

« Merci, nous avons reçu votre lettre » + délai d'attente

Supprime la routine, accélère la première réponse

Filtration

Il met dans les dossiers : « paiement », « coopération », « assistance »

Boîte de réception sans chaos

Transfert

Envoie des questions sur le paiement — au comptable, sur l'intégration — au support technique

Routage rapide

Mots clés

Choisissez un modèle en fonction du contenu de la lettre

Réponses plus pertinentes

Intégration avec CRM

Crée un prospect/une transaction, tire le contact

Entonnoir transparent

Réponse de l'IA

Génère du texte via LLM à partir d'un bref résumé de la lettre

Ton humain, moins de travail manuel

Idées d'amélioration 💡

  • Résumé de la lettre: extraire un résumé et le substituer dans la réponse.

  • Modèles avec variables: nom de l'expéditeur, numéro de commande, date limite.

  • Anti-boucle: ne pas répondre aux réponses automatiques / no-reply, vérifier les en-têtes Auto-Submitted.

  • Multilinguisme: définissez la langue de la lettre et sélectionnez un modèle.

📎 Stockez les modèles dans JSON/YAML et déployez les modifications sans publier de code.

Dans Codique nous rendons l'apprentissage de la programmation passionnant et compréhensible : nous avons des cours intéressants avec des tâches qui aident à améliorer les compétences étape par étape.

Et nous avons aussi un chaîne de télégram, où nous discutons d'idées intéressantes, partageons nos expériences et analysons ensemble les tâches, apprendre devient non seulement utile, mais aussi amusant.

Laissez un commentaire : de quel script de réponses automatiques avez-vous besoin : « paiement », « assistance », « coopération » ou quelque chose de votre choix ?

🎯Arrête de reporter

Tu as aimé l'article ?
Place à la pratique !

Avec Kodik, tu ne lis pas seulement — tu codes immédiatement. Théorie + pratique = vraies compétences.

Pratique instantanée
🧠L'IA explique le code
🏆Certificat

Sans inscription • Sans carte