Supprimer des tonnes de mails sur Gmail ! J’ai enfin trouvé la solution.

Pourquoi supprimer ses vieux mails Gmail, c’est galère (et comment un script Python peut te sauver la vie)

Franchement, gérer sa boîte Gmail quand t’as des dizaines de milliers de mails, c’est pas une partie de plaisir.

Supprimer les vieux mails via l’interface web ? Une vraie prise de tête. Utiliser Thunderbird ? Oui ça marche, mais c’est long, ça rame, et ça bouffe de la ressource en temps. Bref, je te raconte comment j’ai fait pour régler ça avec un petit script Python qui m’a bien aidé.

Gmail : la suppression, c’est pas du gâteau

Si tu as beaucoup de mails, tu connais la galère :

– La sélection des mails dans Gmail, c’est limité à 50 par page, faut faire ça 1000 fois si tu veux tout virer.

– Même avec les filtres (avant telle date, non lus…), ça reste long et pas super fiable.

Thunderbird ? Sympa mais lourd et lent

J’ai aussi testé Thunderbird. Il télécharge tous les mails sur ta machine. Si t’as 100 000 mails, ça prend un temps fou, et ça ralentit ton ordi. Pour vous dire, j’ai plus de 300 000 mails (depuis 2009 héhé !). Des notifications, de la pub, etc. J’ai laissé mon PC tourner toute une nuit, et je n’avais pas tout encore. Quand vous supprimez, on ressent un délai monstre entre ce qu’il se passe sur Thunderbird, et sur l’interface Gmail. Bref, ça marche, mais c’est pas top quand tu veux faire un gros nettoyage vite fait.

La solution qui m’a sauvé : un script Python

Avec un petit script, tu peux directement te connecter à Gmail, chercher tous les mails avant une certaine date, et les envoyer dans la corbeille automatiquement, par lots, sans galérer.

Mais avant, un truc super important : tu ne peux pas utiliser ton mot de passe Gmail normal dans un script comme ça, surtout si tu as la double authentification activée.
Il faut créer un mot de passe d’application.

Comment créer un mot de passe d’application Google (pour ton script)

  1. Va sur ton compte Google à cette adresse : https://myaccount.google.com/security
  2. Sous la section « Connexion à Google », clique sur « Mots de passe d’application ». Ou se rendre à cette adresse : https://myaccount.google.com/apppasswords
  3. Si tu n’as pas la double authentification activée, tu devras d’abord la configurer.
  4. Une fois dans la page, choisis « Mail » pour l’application.
  5. Clique sur Générer. Google te donne un mot de passe à 16 caractères, copie-le.
  6. Utilise ce mot de passe dans ton script à la place de ton mot de passe habituel. Attention, il faut bien le noter !

Le script Python pour virer les vieux mails

import imaplib
import time

# Mets ici ton email Gmail et ton mot de passe d'application
EMAIL = "ton.email@gmail.com"
PASSWORD = "ton_mot_de_passe_application"
date_limite = "01-Jan-2018" # Tous les mails avant cette date seront supprimés

# Connexion au serveur Gmail en SSL
mail = imaplib.IMAP4_SSL("imap.gmail.com")
mail.login(EMAIL, PASSWORD)

# Liste les dossiers pour voir les noms exacts
typ, boxes = mail.list()
for box in boxes:
print(box.decode())

# Sélectionne le dossier "Tous les messages" pour chercher dans tous tes mails
mail.select('"[Gmail]/Tous les messages"')

# Cherche tous les mails avant la date limite
typ, data = mail.search(None, f'BEFORE {date_limite}')
if typ != "OK":
print("Erreur lors de la recherche.")
mail.logout()
exit()

mail_ids = data[0].split()
total = len(mail_ids)
print(f"{total} mails trouvés avant le {date_limite}.")

batch_size = 50 # On supprime par paquets de 50 mails

for i in range(0, total, batch_size):
batch = mail_ids[i:i+batch_size]
ids_str = ','.join(m.decode() for m in batch)
print(f"Déplacement des mails {i+1} à {i+len(batch)} dans la Corbeille...")

try:
# Copie dans la corbeille (le bon dossier chez Gmail s'appelle [Gmail]/Corbeille)
mail.copy(ids_str, "[Gmail]/Corbeille")

# Marque les mails comme supprimés dans le dossier actuel
mail.store(ids_str, '+FLAGS', '\\Deleted')

# Supprime définitivement les mails marqués
mail.expunge()

# Pause pour pas surcharger Gmail
time.sleep(1)

except Exception as e:
print(f"Erreur pendant la suppression : {e}")
break

print("Opération terminée.")
mail.logout()

J’ai donc décider de supprimer tous les mails d’avant le 01 janvier 2018. Sur l’interface Gmail, impossible d’avoir le nombre. Avec ce script, je sais que j’avais plus de 125 000 mails avant cette date.

Pour ne pas surcharger (même s’ils en ont la capacité) des serveurs de Google, j’ai limité la suppression à des tranches de 50 mails. Je me suis fixé cette limite car c’est celle qu’on voit sur l’interface de Gmail.

J’ai également listé les différents dossiers sur ma boîte mails, car en fonction de votre langue, ils peuvent avoir un nom différent.

Comment lancer ce script ?

  1. Installe Python 3 si ce n’est pas déjà fait (python.org)
  2. Crée un fichier mail.py (par exemple) et colle le script dedans.
  3. Modifie EMAIL et PASSWORD avec ton adresse Gmail et le mot de passe d’application.
  4. Ouvre un terminal (cmd sous Windows, Terminal sous macOS/Linux)
  5. Place-toi dans le dossier où est ton fichier mail.py avec la commande cd chemin/du/dossier
  6. Tape :
    python mail.py
    
  7. Suis les infos affichées. Le script va traiter les mails par lots et les envoyer dans la corbeille.

Quelques conseils avant de te lancer

  • Attention, ça supprime vraiment les mails ! Ils seront tous envoyés dans la Corbeille
  • N’utilise pas ton mot de passe principal, toujours le mot de passe d’application.
  • Si tu veux changer la date limite, modifie la variable date_limite au format "JJ-Mmm-AAAA" (exemple "01-Jan-2018").

La seule difficulté rencontrée est à la fin. Les mails sont dans la corbeille de Gmail, et il n’affiche que 9000 mails max !

Il faut donc sélectionner tous les mails de la corbeille, les supprimer, et recommencer jusqu’au dernier mail ! J’ai dû le faire 13 fois.

Et magie, j’ai ainsi récupéré 4 Go d’espace sur mon compte Google !!

 

Démarrez une conversation

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *