AppleScript et l'envoi d'un courriel par Mail [Résolu/Fermé]

Signaler
-
 A -
Bonjour,

Pour une fille qui n'avait jamais touché à AppleScript auparavant, je suis pas mal fier de ce que j'ai pu créer depuis deux jours à l'aide de l'Éditeur de scripts et d'Automator. Sans tout comprendre, pas même les bases (ou presque!), j'ai pu programmer une touche du clavier pour qu'elle ferme toutes les applications (sans sauvegarde), ferme toutes les fenêtres du Finder et éteigne l'ordinateur. Internet m'a été d'un secours incroyable!

Actuellement, je tente désespérément de créer un script pour qu'une capture d'écran soit prise et envoyée par courriel à l'aide d'une seule touche du clavier. J'y suis prrrrrrrresque... le courriel, dont le nom est Capture, se crée avec l'image de l'écran attachée, mais Mail de l'envoie pas. Il reste ouvert, adressé aux destinataires, avec un compte sélectionné, une pièce jointe attachée, sans plus.

J'ai créé la capture d'écran à l'aide des scripts d'Automator et voici celui de la pièce jointe, qui fonctionne :
tell application "Mail"
attachment
end tell

Ce scripts-ci ne fonctionne pas, même si l'Éditeur de scripts (ni même Automator) n'y détecte d'erreur :
tell application "Mail"
send (sent "Capture") et (sent message "Capture") sont également reconnus, sans réaction)
end tell

Je veux donc que soit envoyé le courriel. Ensuite, je veux que Mail quitte.

Le script "send" existe pourtant dans la bibliothèque...
Quelqu'un peut m'aider? me dire ce qui cloche dans mon script?
Merci d'avance!

annelou2000

3 réponses

Je planchais sur un problème analogue: composer un message automatiquement, y annexer des fichiers et l'envoyer automatiquement.

Pour votre problème, il suffit de redéfinir les variables leCorps, leSujet, expediteur, destinataire. De même, les fichiers à annexer sont définis dans les variables cibleUnPOSIX, cibleDeuxPOSIX. Attention, il s'agit des noms de fichiers avec le chemin d'accès complet sous la forme : "Disque dur:Utilisateurs:Nana:Documents:Images:leFichier.jpg" (à adapter à votre configuration).

La commande pour l'envoi automatique est "send nouveauMessage". Bien entendu, "nouveauMessage" est un simple identifiant qui peut être nommé autrement, mais à tous les endroits!

Le code :

tell application "Mail"
set leCorps to "Bonjour," & return & return & "Veuillez trouver en annexe vos listes d'élèves." & return & return & "Bien à vous." & return & return & "La Direction"
set nouveauMessage to make new outgoing message with properties {subject:leSujet, content:leCorps & return & return}
tell nouveauMessage
set visible to true
make new to recipient at end of to recipients with properties {name:expediteur, address:destinataire}
tell content
make new attachment with properties {file name:(cibleUnPOSIX as alias)} at after the last paragraph
make new attachment with properties {file name:(cibleDeuxPOSIX as alias)} at after the last paragraph
end tell
send nouveauMessage
end tell
end tell
3
Merci

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez Comment Ça Marche

CCM 60511 internautes nous ont dit merci ce mois-ci

Merci infiniment pour avoir pris le temps de m'envoyer ces précieuses informations. Ça fonctionne!

Sauf que je n'ai pas mis «as alias» avec ma pièce jointe... je ne comprends pas à quoi ça sert en fait...

J'ai donc un processus complet qui
- prend une capture d'écran
- crée un nouveau courriel, joint cette image captée, envoi le message (avec un délai de 45 secondes pour être sûr que le message quitte la boîte d'envoi) et quitte Mail
- jete à la corbeille le fichier de la capture et vide la corbeille.
Environ une minute après le déclenchement du processus, plus rien n'y paraît... Exactement ce qu'il faut à une personne âgée qui voit très peu et est bloquée sur son ordinateur : elle n'a qu'à appuyer sur une touche pour alerter un proche de ce que son ordinateur lui affiche ou lui demande.

Au nom de mon grand-père de 91 ans et moi-même : merci encore! :)
> annelou2000
Bonjour,

Je suis ravi d'avoir pu vous aider.

Auriez-vous la gentillesse de m'adresser le code de votre solution applescript ? J'y apprendrai certainement de nouvelles choses

Merci par avance
Voici le code Applescript que j'ai utilisé, mais le processus n'est pas complet, car j'ai monté le processus à l'aide d'Automator. Si vous avez un truc à me donner pour que je puisse vous faire parvenir le fichier Automator, n'hésitez pas (lien de téléchargement? je ne sais pas comment procéder, à moins d'avoir votre courriel...).

Voici mon AppleScript :

tell application "Mail"
set newMessage to (make new outgoing message at end of outgoing messages with properties {subject:"Objet", content:"message"})
tell newMessage
make new recipient at end of to recipients with properties {address:"courriel1"}
make new cc recipient at beginning of cc recipients with properties {address:"courriel2"}
make new attachment with properties {file name:"/Users/annelou/desktop/image.png"} at after the last paragraph
send newMessage
delay 45
quit
end tell
end tell

Si j'ai un courriel, il me fera plaisir de vous envoyer l'ensemble du processus.

Également, voici le script que j'ai rédigé pour fermer toutes les applications et éteindre l'ordinateur sans danger, au cas où il vous serait utile (il me convient tel quel, mais il ne fonctionne peut-être pas comme il le faudrait avec tous les logiciels, comme ceux d'Adobe ou de Microsoft):

tell application "Finder"
close every window
end tell
tell application "Finder"
set Mes_Appli to name of (every application process whose visible is true)
end tell
repeat with m in Mes_Appli
tell application m to quit saving no
end repeat
tell application "Finder"
shut down
end tell

J'espère que cela vous aidera...
Merci pour ton script qui m'a bien servi.

Comme je suis paresseux et que je n'ai pas envie de modifier ce script en fonction de l'utilisateur, voici ce que j'ai fait afin de le rendre plus "compatible":

tell application "System Events"
set UserName to name of the current user as string
end tell

tell application "Mail"
set newMessage to (make new outgoing message at end of outgoing messages with properties {subject:"Objet", content:"message"})
tell newMessage
make new recipient at end of to recipients with properties {address:"courriel1"}
make new cc recipient at beginning of cc recipients with properties {address:"courriel2"}
make new attachment with properties {file name:"/Users/" & UserName & "/Desktop/image.png"} at after the last paragraph
send newMessage
delay 45
quit
end tell
end tell
Bonjour, Je veux savoir comment faire pour envoyer un mail avec des pièces jointes mais définie dans le code, sachant que je veux envoyer l'adresse du destinataire à partir de mon code comme pour le sujet que vous avez définie subject:
Je veux savoir si il y a une autre fonction pour envoyer des mail avec des pièces jointe et un nom de contact mis directement dans le code ?

Je vous remercie d'avance

Bonjour,
est-il possible de rajouter quelques lignes supplémentaires à la fin du script d'envoi de mail afin de supprimer le message ainsi envoyé du dossier "Messages envoyés" de Mail ?