septembre 19th, 2009AppleScript et Mail
Comme promis je vais vous montrer l’utilisation d’AppleScript avec Mail avec un script que j’ai trouvé assez rapidement et qui permet de sauvegarder les documents joints (PDF) d’un email dans un dossier sur votre Mac. En allant dans les préférences de Mail et sur l’onglet Règles, vous pouvez définir une règle de message. C’est à dire un comportement que doit adopter Mail en recevant tel message. Par exemple vous pouvez dire que les messages reçus ayant pour objet « pièce jointe » adopte une action précise (déplacement dans un dossier, vers la poubelle, etc…). Dans notre cas nous allons dire à Mail d’exécuter un script AppleScript. Ce script va sauvegarder le fichier PDF joint dans le dossier « joint » du bureau. Voici le code :
property destinationFolder : (path to desktop as Unicode text) & « Joint: »
using terms from application « Mail »
on perform mail action with messages theMessages for rule theRule
tell application « Mail »
repeat with eachMessage in theMessages
repeat with thisAttachment in eachMessage’s mail attachments
if (MIME type of thisAttachment) is equal to « application/pdf » then
set thisFile to destinationFolder & name of thisAttachment
save thisAttachment in thisFile
end if
end repeat
end repeat
end tell
end perform mail action with messages
end using terms from
La première ligne déclare simplement une propriété. destinationFolder contient simplement le chemin pour aller au Bureau (path to desktop as Unicode text) concaténé avec « Joint: » qui est notre dossier sur le bureau. N’oubliez pas les « : » car le chemin du dossier est au format Posix. Les deux lignes suivantes sont olbigatoires dans le cas d’une règle avec Mail, ils sont à mettre dans tous les scripts que vous utiliserez pour des règles de Mail. Le script reçoit une liste de message, il faut donc traiter tous les messages reçus (repeat with eachMessage in theMessages). Avec l’instruction repeat nous traitons tous les messages et dans notre boucle, eachMessage contient le message courant parmi la liste. Dans chaque message nous pouvons avoir plusieurs fichiers joints, si ce n’est pas le cas pour vous il suffit d’écrire :
set thisAttachment to eachMessage’s mail attachment
On regarde ensuite si le MIME TYPE est du type PDF, cette étape n’est pas nécessaire si vous le désirez. Si vous voulez par exemple ne sauvegardez que les fichiers joints JPG, consultez tous les MIME TYPE sur ce site http://www.mimetype.org/ pour trouver le bon MIME TYPE. Enfin pour finir, on définit la variable thisFile comme étant la concaténation de destinationFolder et du nom du fichier joint. L’instruction suivante sauvegarde simplement le fichier joint dans le dossier de destination.
Voilà vous pouvez vous servir du script tel quel ou le modifié à votre guise pour vos besoins personnels. Dans tous les cas il m’a bien dépanné et je vous montrerais la suite de mon objectif qui était d’imprimer les fichiers PDF reçus par email en fichier joint.

17 février , 2010 à 23 h 20 min
Bonjour,
Merci pour ce script et l’explication qui va avec.
En tâtonnant, j’ai compris que le fichier de réception (ici « Joint: ») ne doit pas comprendre d’accent (donc pas de « documents scannés: » mais « documents scannes: »).