# Automatiser l'extraction des pieces jointes



## NoaIMac (9 Septembre 2009)

Bonjour,
Y a t il une fonction ou un logiciel qui automatise l'extraction des pièces jointes des mails pour les copier dans des répertoires? A l'image des régles.
On pourrait ainsi définir plusieurs régles en fonction soit des expéditeurs, soit du type de fichiers et en faire une copie automatique à réception du mail dans des répertoires.

Savez vous si un autre client mail peut le faire ?

Je recois environ 300 mails par jour, cela m'aiderait grandement !

Serge


----------



## Aliboron (9 Septembre 2009)

NoaIMac a dit:


> Y a t il une fonction ou un logiciel qui automatise l'extraction des pièces jointes des mails pour les copier dans des répertoires ? A l'image des régles.


Ben, c'est justement un travail pour les règles, ça. En tout cas possible sans problème par une règle dans Entourage, par exemple pour les messages de Untel, enregistrer les pièces jointes dans tel dossier. C'est envisageable aussi dans Mail, à condition de passer par un AppleScript, manifestement.

*Note du modo :* Et en tout état de cause, ce topic relève du forum "Internet et réseau". On déménage !


----------



## NoaIMac (5 Octobre 2009)

merci, 
Sais tu comment faire cela avec un AppleScript? y a t il des tuto pour apprendre l'appelscript car je n'ai pas l'impression que mon problème interresse beaucoup de monde.
Mais j'ai vraiment besoin de mettre en place cela, j'en suis à 10.000 fichiers en 3 ans de travaux et je passe un temps enorme à ranger les pieces jointes. 

En fait j'aimerai bien un script qui enregistre automaquement toutes les pièces jointes téléchargés dans le répertoire Téléchargement Mail en créant un répertoire du nom de l'expéditeur. Ce serait vraiment l'idéal ça.

Merci d'avance pour vos réponses,

Serge


----------



## zacromatafalgar (6 Octobre 2009)

Salut,

Je t'ai fait un script qui ventile les pièces jointes dans un dossier au nom de l'expéditeur lui-même dans un dossier intitulé "test" situé sur le bureau

```
property thePath : (path to desktop as text) as string

using terms from application "Mail"
	on perform mail action with messages theMessages for rule theRule
		tell application "Mail"
			set pathOk to my testFolder(thePath, "test")
			repeat with eachMessage in theMessages
				set theSender to extract name from sender of eachMessage
				if (count of (mail attachments of eachMessage)) > 0 then
					set destFolder to my testFolder(pathOk, theSender)
					
					repeat with PJ in mail attachments of eachMessage
						set {name:theName} to PJ
						set nameOk to my testFile(destFolder, theName)
						try
							save PJ in (destFolder as Unicode text) & nameOk
						end try
					end repeat
				end if
			end repeat
		end tell
	end perform mail action with messages
end using terms from

on testFile(destinationFolder, theName)
	set AppleScript's text item delimiters to "."
	set nameWithoutExt to text item 1 of theName
	set ext to text item 2 of theName
	set AppleScript's text item delimiters to ""
	try
		set i to ""
		set sep to ""
		(destinationFolder & nameWithoutExt & sep & i & "." & ext) as alias
		set sep to ""
		repeat with i from 1 to 1000
			(destinationFolder & nameWithoutExt & sep & i & "." & ext) as alias
		end repeat
	end try
	return (nameWithoutExt & sep & i & "." & ext) as string
end testFile

on testFolder(leDoss, leNom)
	try
		(leDoss & leNom & ":") as alias
	on error
		do shell script "mkdir " & (quoted form of POSIX path of (leDoss & leNom))
	end try
	return ((leDoss & leNom & ":") as Unicode text)
end testFolder
```


----------



## NoaIMac (8 Octobre 2009)

Merci c'est vraiment top,
mais comment ca marche le script ? Désolé de mon incompétence en la matière je n'ai jamais utilisé cela.
Je fais quoi avec ton script ? Je le "mets" où ?

Merci

Serge


----------



## zacromatafalgar (8 Octobre 2009)

NoaIMac a dit:


> Merci c'est vraiment top,
> mais comment ca marche le script ? Désolé de mon incompétence en la matière je n'ai jamais utilisé cela.
> Je fais quoi avec ton script ? Je le "mets" où ?
> 
> ...



Pas de problème 

Il faut copier/coller le code dans l'Éditeur de script que tu trouveras dans le dossier Applescript du dossier application, enregistrer au format script puis faire une règle dans Mail en choisissant Exécuter Applescript (sélectionner le script précédemment enregistré).


----------



## NoaIMac (8 Octobre 2009)

Super, ca marche du tonnerre !
Bravo !
Comment faire pour l'appliquer à tous les mails recus ?
Et comment changer le répertoire de destination (qui reste sur le bureau mais je veux que les fichiers s'enregistrent sous desktop/DDB/Telechargements.

Merci d'avance !

Serge

---------- Nouveau message ajouté à 13h32 ---------- Le message précédent a été envoyé à 12h26 ----------

J'ai essayé de changer à la mano mais le script me crée un nouveau répertoire sur le bureau au lieu de copié dans le répertoire existant. En fait je veux que les fichiers se copie dans le répertoire Dropbox/PJ_Mail (Dropbox se situant dans utilisateurs/monnom/Dropbox puis PJ_Mail. Si cela aide j'ai aussi un alias sur le bureau de Dropbox : Dropbox alias.
Merci pour ton aide.

J'ai réglé le problème de la règle dans Mail en sélectionnant le compte concerné.

Merci

Serge


----------



## zacromatafalgar (8 Octobre 2009)

Salut,

En supposant que tes dossiers "Dropbox" et "PJ_Mail" soient déjà créés.
Pour changer le chemin :

Remplace cette partie


```
property thePath : ((path to desktop as text) as string

using terms from application "Mail"
	on perform mail action with messages theMessages for rule theRule
		tell application "Mail"
			set pathOk to my testFolder(thePath, "test")
			repeat with eachMessage in theMessages
				set theSender to extract name from sender of eachMessage
				if (count of (mail attachments of eachMessage)) > 0 then
					set destFolder to my testFolder(pathOk, theSender)
					
					repeat with PJ in mail attachments of eachMessage
						set {name:theName} to PJ
						set nameOk to my testFile(destFolder, theName)
						try
							save PJ in (destFolder as Unicode text) & nameOk
						end try
					end repeat
				end if
			end repeat
		end tell
	end perform mail action with messages
end using terms from
```
par

```
property thePath : ((path to home folder as text) & "Dropbox:PJ_Mail:") as string

using terms from application "Mail"
	on perform mail action with messages theMessages for rule theRule
		tell application "Mail"
			repeat with eachMessage in theMessages
				set theSender to extract name from sender of eachMessage
				if (count of (mail attachments of eachMessage)) > 0 then
					set destFolder to my testFolder(thePath, theSender)
					
					repeat with PJ in mail attachments of eachMessage
						set {name:theName} to PJ
						set nameOk to my testFile(destFolder, theName)
						try
							save PJ in (destFolder as Unicode text) & nameOk
						end try
					end repeat
				end if
			end repeat
		end tell
	end perform mail action with messages
end using terms from
```
Dis moi si tu veux rajouter la détection des dossiers "Dropbox" et "PJ_Mail et éventuellement leur création&#8230;


edit : le script conserve les fichiers de même nom en rajoutant un chiffre à la fin, peut être voudrais tu plutôt qu'ils soient remplacés ?


----------



## NoaIMac (8 Octobre 2009)

Pour la création inutile le répertoire existe déjà.
Pour la nomination des pièces en double c'est parfait comme cela, je préfère avoir une vérification plutôt qu'un risque d'écrasement et de perte.


Je vais me mettre a applescript, je commence à faire le tour des tuto, c'est vraiment intéressant. Si tu en connais n'hésite pas.

Merci beaucoup pour ton aide c'est vraiment sympa !

Et bravo encore, je désespérais d'avoir une solution de ce type, MERCI !!!!!


Serge


----------



## zacromatafalgar (9 Octobre 2009)

NoaIMac a dit:


> Je vais me mettre a applescript, je commence à faire le tour des tuto, c'est vraiment intéressant. Si tu en connais n'hésite pas.


Il y a iScript.fr, l'excellent Applescript de A à Z


NoaIMac a dit:


> Merci beaucoup pour ton aide c'est vraiment sympa !
> 
> Et bravo encore, je désespérais d'avoir une solution de ce type, MERCI !!!!!
> 
> Serge



De rien


----------



## titigrou (4 Février 2017)

Hello,
Je déterre un peu ce sujet!
J'ai le même problème, à savoir que je voudrai stocker automatiquement les pièces jointes envoyées par une personne dans un dossier spécifique.
J'ai pris le script que tu as fait, je l'ai appliqué sur une règle Mail, le dossier est bien crée sur le Bureau, avec un sous dossier au nom de l'expéditeur, mais rien ne se copie à l'intérieur!
Et je vois pas pourquoi!
Je suis sur El Capitan!
Merci pour votre aide!
Antoine


----------

