# Suppression automatique dans mail avec automator



## Coma (2 Avril 2011)

Bonjour a tous!

Tout d'abord, je tiens a m'excuser si je n'ai pas placé mon sujet dans la bonne section du forum, je ne suis pas sur que vous considériez automator comme de la programmation...

Voila mon problème: je tiens a réaliser un service, appelons le "suppression" pour l'exemple, qui me permettrait de faire un clic droit sur un message dans mail, et, lors du clic sur "suppression", ajouterais ce message a une "liste noire" de telle sorte que je ne reverrais plus jamais ce message dans ma boite mail.

J'avais donc pensé a créer une règle dans mail supprimant le message en fonction de l'expéditeur, or, dans automator, rien ne permet de modifier ou créer un règle.

J'ai donc voulu ruser (c'est un bien grand mot...), et j'ai imaginé dire a automator d'aller modifier le fichier MessageRules.plist et d'y ajouter l'adresse or je retrouve facilement l'adresse et la syntaxe a utiliser mais au dessus de chaque adresse je trouve des truc du genre: 

<string>5318f948-53e2-4938-af4d-6b6a43a25cbc</string>

Qui sont différents pour chaque adresse et que je ne sais donc pas définir...

Quelqu'un aurait t-il une solution a mon problème?

NB: La solution est peut être sous mes yeux et déjà prévue par mail mais j'avoue ne pas l'avoir trouvée....... -> Si c'est le cas, je suis vraiment désolé!)

Un grand merci d'avance a tous ceux qui voudrons bien prendre la peine de me répondre


----------



## Flibust007 (3 Avril 2011)

Tu as une solution, toute faite, toute prête, dans mail.
Il suffit de créer une règle de suppression provisoire ou immédiate en fonction de l'expéditeur ou toutes autres éventualités.

==> Mail
==> Préférences
==> Règles

Puis voir image jointe pour suppression immédiate.

Ou alors, je n'ai rien compris.


----------



## Anonyme (3 Avril 2011)

Laisse tomber automator...
Passe plutôt à l'AppleScript. Le problème de l'AppleScript, c'est qu'on peut pas faire des trucs genre clic droit ou service.
Dans ce cas là, tu met l'application AppleScript que tu as faite dans ton dock et quand tu veux ajouter un expéditeur dans ta liste noire, tu cliques sur l'application et voilà.
Pour le script, je te laisse chercher un peu...


----------



## Anonyme (3 Avril 2011)

Bonjour,



xcode a dit:


> Le problème de l'AppleScript, c'est qu'on peut pas faire des trucs genre clic droit ou service.


C'est possible, puisqu'il existe une action dans Automator qui permet d'*exécuter un Script AppleScript*.


----------



## Anonyme (3 Avril 2011)

Je sais...
Mais même dans Automator, on peut pas le faire.
Depuis quand on peut modifier le contenu des clics droits dans Mail...
Sous Snow Leopard, il y a aussi les services.


----------



## Anonyme (3 Avril 2011)

xcode a dit:


> Je sais...
> Mais même dans Automator, on peut pas le faire.
> Depuis quand on peut modifier le contenu des clics droits dans Mail...
> Sous Snow Leopard, il y a aussi les services.



Désolée, je n'ai pas mis assez d'explication.
Je voulais dire que c'est possible de créer un service Automator sur Snow Leopard , et que ce service Automator contient une action "Exécuter un Script AppleScript".


----------



## Anonyme (3 Avril 2011)

Quand je parle des services, je veux dir ça : services.png


----------



## Anonyme (5 Avril 2011)

xcode a dit:


> Quand je parle des services, je veux dir ça : services.png



Oui, c'est exactement ça http://static.arstechnica.com/automator-new-service.png

Avec Automator sur Snow Leopard , on peut créer un service pour une application en particulier ("Mail" par exemple).


----------



## Anonyme (5 Avril 2011)

Mais Coma n'a pas forcément SnowL.


----------



## Coma (9 Avril 2011)

Désolé de répondre si tardivement!

Donc pour préciser, oui je suis sous SL

Pour répondre a flibust007:
C'est exactement ce que je souhaite faire mais sans avoir a chaque fois a passer par: 
Mail -> préférences -> règles -> nouvelle règle -> puis paramétrer la règle, l'idée étant de n'avoir qu'un clic a faire et qu'automator fasse le reste. (Via un service)

Pour xcode:
L'intérêt en passant par automator est d'avoir mon script intégré a mail (en créant un service donc) 
Javais imaginé passer en applescript en faisant "executer un script apple script" mais, je ne sais pas si il y a une correspondance entre les variables que j'aurais créé dans automator et celles qui se trouverons alors sur mon script

(par exemple:
Dans automator, si je definit "truc@bidule.com" comme variable "adresse", est ça fonctionnera dans mon script quand je mentionnerrais "adresse" ?)

J'espere avoir été clair...
Merci pour vos réponses en tout cas!


----------



## Anonyme (9 Avril 2011)

Bonjour,



Coma a dit:


> (par exemple:
> Dans automator, si je definit "truc@bidule.com" comme variable "adresse", est ça fonctionnera dans mon script quand je mentionnerrais "adresse" ?)
> !


Voici la solution qui modifie le fichier "MessageRules.plist" :
C'est tester que sur Leopard, je ne sais pas pour Snow Leopard.

*Mail* lit le fichier "MessageRules.plist" à son lancement, donc toutes modifications dans le fichier *PLIST* ne sera pris en compte que lors de la prochaine ouverture de *Mail*

Voici le script  à ajouter dans l'action "*Executer un script AppleScript*".
Une seule action suffit, vous n'avez pas besoin des autres actions.

```
property tValues : {|CriterionUniqueId|:"", |Expression|:"", |Header|:"From", |Qualifier|:"IsEqualTo"}

on run {input, parameters}
	set all_IDs to paragraphs of (do shell script "/usr/bin/defaults read ~/Library/Mail/MessageRules | /usr/bin/grep '\\(CriterionUniqueId = \\|RuleId = \\)' | /usr/bin/sed -E 's/ .* = |;|\\\"//g'")
		
	tell application "Mail" to repeat with i in (get selection)
		set uniqueID to my createID(all_IDs)
		set end of all_IDs to uniqueID
		set |CriterionUniqueId| of tValues to uniqueID
		set |Expression| of tValues to extract address from (get sender of i)
		my addCriteriaToRule()
	end repeat
end run

on addCriteriaToRule()
	tell application "System Events" to tell property list item 1 of property list item "rules" of contents of property list file "~/Library/Mail/MessageRules.plist"
		make new property list item at end of property list item "Criteria" with properties {kind:record, value:tValues}
	end tell
end addCriteriaToRule

on createID(tIDS)
	repeat
		set t to do shell script "/usr/bin/uuidgen" -- génère un ID
		if t is not in tIDS then return t
	end repeat
end createID
```


----------



## Coma (16 Avril 2011)

C'est exactement ce que j'avais imaginé faire!

Malheureusement, pour une raison que je ne m'explique pas, automator est incapable de compiler le script  ("erreur de syntaxe, Le gestionaire run est spécifié plus dune fois ou il y a eu des commandes de haut niveau en plus du gestionnaire run.") J'ai pourtant essayé pas mal de truc mais pas moyen de le compiler...!


----------



## Anonyme (17 Avril 2011)

Bonjour,



Coma a dit:


> Malheureusement, pour une raison que je ne m'explique pas, automator est incapable de compiler le script  ("erreur de syntaxe, Le gestionaire run est spécifié plus dune fois


Il ne faut pas coller le script où ce qu'il dise
il faut tout effacer tout le texte de l'action et faire  un copier/coller de mon script


----------

