Le problème est que Gmail utilise des "étiquettes" pour attacher les messages, et que les messages peuvent avoir zéro ou plusieurs étiquettes, alors que IMAP place les messages dans des dossiers (boîte de réception, corbeille, etc.) et que chaque message se trouve dans un, et un seul, dossier. Ainsi, lorsque Mail.app demande au serveur Gmail de supprimer un message de la boîte de réception, le serveur Gmail ne peut pas dire de manière fiable s'il doit simplement supprimer le libellé "Boîte de réception" de ce message (ce qui lui laisse un libellé de moins, avec éventuellement d'autres libellés, ou peut-être aucun libellé mais toujours disponible dans l'affichage "Tous les messages") ou s'il doit, de manière plus permanente, supprimer complètement le message de la base de données.
La solution consiste à configurer Gmail pour qu'il n'affiche pas les messages dans plusieurs dossiers IMAP (en désactivant le dossier "All Mail") et pour que les serveurs Gmail "suppriment" le message lorsque Mail.app le leur demande, plutôt que de le faire "automatiquement", même si ce paramètre (par défaut) sur le serveur Gmail semble impliquer que le paramètre "auto" est celui qui est souhaité.
Je n'ai pas testé TOUS ces paramètres (je me fie principalement à la fonction "30 jours dans la corbeille" de Gmail pour vider les messages) : https://support.google.com/mail/answer/7401?hl=en ) et je n'ai que récemment mis à jour vers "El Capitan", mais les choses ne semblent pas différentes de mes expériences Yosemite, Mavericks et antérieures. Notez qu'en mai 2020, j'utilise toujours la même configuration dans les systèmes jusqu'à Mojave inclus, mais je n'ai pas testé Catalina. Le fonctionnement du système semble être le même avec un compte @gmail.com "normal" ou un compte "Google Apps for Domains" @votredomaine.com.
Cependant, j'ai configuré les choses de manière à ce que les courriels soient correctement mis dans la corbeille du côté de Gmail, et il semble qu'il y ait des paramètres disponibles pour supprimer les choses immédiatement, et cela fonctionne sur mon système de la manière dont je le souhaite.
Les instructions détaillées sont donc les suivantes :
-
Au http://gmail.com/ Pour cela, connectez-vous à votre compte et sélectionnez ce qui suit : "Paramètres" -> "Transfert et IMAP"
-
Cochez "Activer IMAP"
-
Pour "Quand je marque un message dans IMAP comme supprimé".
- Cochez "Auto-Expunge off - Wait for the client to update the server".
-
Au lieu de "Lorsqu'un message est marqué comme supprimé et expurgé du dernier dossier IMAP visible".
- Cochez la case "Supprimer immédiatement le message pour toujours" (Mon système est configuré pour "Déplacer le message dans la corbeille" et s'appuyer sur les 30 jours mentionnés ci-dessus)
Vous devez sélectionner le bouton "Enregistrer les modifications" en bas de page pour que cela prenne effet.
Ces paramètres n'entraînent la suppression (ou le déplacement vers la corbeille Gmail) que lorsque le message n'est plus associé à aucune balise Gmail ou, en d'autres termes, lorsqu'un client IMAP supprime le message de tous les dossiers IMAP. Étant donné que l'un des "dossiers" pouvant être affichés dans un client IMAP Gmail est "Tous les messages", la simple suppression d'un message de la boîte de réception du client IMAP n'entraînera pas sa disparition. Nous devons donc limiter les "étiquettes"/"dossiers" que Gmail expose en tant que dossiers IMAP :
Dans Gmail, sélectionnez les éléments suivants :
"Paramètres" -> "Étiquettes"
Cochez la case "Afficher dans IMAP" pour "Boîte de réception", "Courrier envoyé" et "Spam" et décochez la case "Afficher dans IMAP" pour tous les autres "Étiquettes du système". Toute étiquette non système générée par l'utilisateur peut être définie comme "Afficher dans IMAP".
Notez que si vous décochez la case "Tout le courrier" "Afficher dans IMAP", tout un tas d'e-mails qui n'ont pas d'autres étiquettes (qui ne se trouvent dans aucun autre dossier IMAP) risquent de ne plus être visibles dans Mail.app ou dans tout autre client IMAP. L'utilisation de l'interface web de Gmail pour rechercher ces messages "orphelins" et l'ajout du libellé "Boîte de réception" ou d'un autre libellé affiché dans IMAP les rendraient à nouveau visibles dans Mail.app.
Avec le système Gmail configuré de cette manière, je trouve que les meilleurs paramètres de Mail.app à utiliser sont ceux de "Courrier" -> "Préférences" -> "Comptes" pour le compte Gmail en question, de sorte que "Comportements de la boîte aux lettres" soit réglé sur "Stocker sur le serveur" uniquement pour les boîtes aux lettres "Envoyés" et "Courrier indésirable". Ces deux cases sont cochées et les cases "Brouillons" et "Corbeille" ne sont pas cochées. Ces deux cases doivent être décochées parce que nous avons configuré le serveur Gmail pour qu'il n'expose pas ces cases en tant que dossiers IMAP.
Je n'accède que rarement à l'interface web de Gmail et j'utilise presque exclusivement Mail.app ou l'application Gmail d'iOS pour interagir avec Gmail. Certains de ces paramètres pourraient être configurés différemment si les interactions avec le site web étaient nombreuses.
Pour le résultat souhaité par Mark, à savoir la suppression immédiate des messages, les paramètres ci-dessus devraient fonctionner : lorsqu'un message est déplacé ou supprimé de la boîte de réception Gmail et des dossiers Spam, il devrait être immédiatement supprimé du serveur Gmail. Le message peut toujours être disponible dans la corbeille d'Apple, mais celle-ci n'est pas liée à la corbeille du serveur. (Si le paramètre "Déplacer le message dans la corbeille" a été défini sur le serveur Gmail, le serveur le déplacera dans la corbeille du serveur, et trente jours plus tard, il aura disparu). Je ne sais pas si Mail.app enverra le signal "expunge" aux serveurs Gmail immédiatement, ou seulement après que la corbeille locale de Mail.app aura été vidée, ou selon un autre calendrier de synchronisation.
Une autre solution consisterait à faire en sorte que le serveur Gmail expose la corbeille du serveur en tant que dossier IMAP et que Mail.app stocke la corbeille sur le serveur. Si le paramètre de serveur "Supprimer immédiatement le message pour toujours" est défini, le comportement devrait être le même - le fait de vider la corbeille dans Mail.app devrait entraîner la suppression définitive du message par le serveur Gmail. Je n'ai pas testé cette configuration de suppression immédiate, donc si quelqu'un a une expérience réelle à ce sujet, merci de nous en faire part.
La clé de tout cela est de NE PAS exposer le dossier "All Mail" en tant que dossier IMAP et de désactiver la fonction "Auto-Expunge" de manière à ce que les options de suppression du courrier puissent être sélectionnées.
Cela n'aura pas non plus d'impact direct sur les messages manipulés via le site web de Gmail : lorsque vous utilisez le site web pour supprimer tous les libellés d'un message, ce message se trouve toujours dans la collection "Tous les messages" et n'est pas immédiatement supprimé ou déplacé dans la corbeille. Il peut s'avérer nécessaire d'aller sur le site web de Gmail et de parcourir la collection "Tous les messages" pour éliminer tout ce qui n'a pas d'étiquette.
Notez que dans Yosemite et les versions ultérieures, lorsque vous configurez un compte que Mail. app reconnaît comme un compte Google ou Gmail (y compris les comptes d'organisations hébergées chez Google), il ne configure pas le compte désigné comme "IMAP", mais le désigne comme "Google IMAP" et sélectionne puis grise le paramètre "Avancé" de "Détecter et maintenir automatiquement les paramètres du compte", ce qui peut avoir pour effet que le compte SMTP associé au compte "Google IMAP" ait également ce paramètre Avancé de "Détecter et maintenir automatiquement les paramètres du compte" sélectionné et grisé, de sorte qu'il ne peut pas être désélectionné. Cela semble également se produire lors des mises à niveau du système et lorsque les comptes de messagerie sont mis à jour lors de la mise à jour du programme Mail.app.
Pour forcer la création d'un compte IMAP "normal", on peut créer un nouveau compte dans Mail.app mais utiliser de fausses informations de serveur IMAP que Mail.app ne reconnaît pas comme des serveurs Google (comme "smtp.notgm.comm" et "imap.notgm.comm"). Une fois le compte créé en tant que compte IMAP "normal", mes tests indiquent que le fait de remplacer les informations du serveur par le serveur Google correct ne le transforme pas en compte "Google IMAP", et que l'option "Détecter et gérer automatiquement les paramètres du compte" peut (et devrait probablement, si vous ne voulez pas que les choses soient modifiées à votre insu) être décochée. Je ne sais pas si la désignation du compte "Google IMAP" possède d'autres fonctionnalités ou capacités que le compte IMAP "normal".
Pour être complet, voici les paramètres requis pour le système Gmail de Google en date de novembre 2015 :
imap.gmail.com
Gmail IMAP user name: Your full Google account address (e.g. "me@gmail.com" or "me@company.com")
Gmail IMAP password: Your Google account password
Gmail IMAP port: 993
Gmail IMAP TLS/SSL required: yes
smtp.gmail.com
Gmail SMTP user name: Your full Google account address (e.g. "me@gmail.com" or "me@company.com")
Gmail SMTP password: Your Google account password
Gmail SMTP port (TLS): 587
Gmail SMTP TLS/SSL required: yes
Faites-moi savoir si cela fonctionne pour vous et nous pourrons mettre à jour la réponse avec toutes les améliorations détaillées que vous pourriez découvrir.
Plus d'informations à l'adresse suivante https://web.archive.org/web/20151022160428/http://jeffschuette.com/2012/03/07/setting-up-apple-mail-to-rock-and-roll-with-gmail/ y https://web.archive.org/web/20151108133234/http://jeffschuette.com/2013/11/05/apple-mail-and-gmail-part-deux/ pour Mavericks où Mail.app gère mieux l'étiquette "All Mail" qu'auparavant. Pour ma part, j'ai conservé l'étiquette "All Mail" non exposée à IMAP, même dans Mavericks, et j'ai poursuivi cette pratique dans Yosemite et El Capitan.
Cet article de MacWorld datant de 2013 couvre une partie des mêmes informations et contient des captures d'écran :
https://www.macworld.com/article/2048781/how-to-delete-gmail-messages-so-theyre-truly-gone.html