Yosemite Mail met-il en cache les fichiers de signature? Comment puis-je contourner ça?

1

J'ai créé un petit script qui recherche une signature aléatoire parmi une liste de citations de plus en plus longue et modifie le code HTML de mon fichier de signatures pour insérer la citation en place. Je déclenche ce script via launchd toutes les quelques minutes pour que ma signature soit «randomisée» tout au long de la journée.

Jusqu'à Mavericks, cela a bien fonctionné. Maintenant, dans Yosemite (10.10), la signature n'est plus mise à jour. Si je vais dans Prefs - & gt; Signatures et glissez / déposez la signature de la liste 'Tous' sur mon compte de messagerie, cela déclenchera une mise à jour. Il met également à jour lorsque je redémarre Mail. Il semble que Mail mette maintenant en cache le contenu du fichier de signature et ne l'actualise que lorsqu'il est "déclenché" d'une manière ou d'une autre.

Je sais qu'il existe maintenant deux copies possibles du fichier de signature - une version locale et une version iCloud. J'ai mis à jour mon script pour m'assurer que les deux utilisent la signature mise à jour. Si je relance le courrier ou fais le tour des préférences, il affiche le devis mis à jour dans la signature, je sais donc que mon script fonctionne correctement.

Est-ce que quelqu'un sait quelque chose à propos de ce cache et / ou comment je pourrais déclencher Mail pour actualiser la signature avec mon script ou une autre supercherie? Je ne sais même pas par où commencer à chercher ce genre de chose.

James Alday
la source

Réponses:

0

J'ai eu le même problème que toi. J'ai fait quelques recherches et j'ai trouvé une solution qui fonctionnait auparavant sous OSX 10.8 jours et qui ne fonctionnait plus sous OSX 10.9. Curieusement, cela fonctionne à nouveau avec OSX 10.10.1 et Mail 8.1 (1993).

Cela comporte plusieurs parties: un AppleScript que vous compilez dans une application, un fichier texte contenant vos guillemets aléatoires, deux signatures dans Mail.app (l’un est un modèle, l’autre est la signature réelle de vos messages) et le système. service 'cron'. (Idéalement, vous devriez utiliser launchd, mais je ne suis pas encore arrivé à ça.)

Le AppleScript:

if application "Mail" is running then
    set AppleScript's text item delimiters to "~###~"
    set myQuote to some text item of (read "/Users/Steve/.sigs.in")
    tell application "Mail"
       set the content of signature "MySignature" to the content of signature "MyTemplate" & myQuote
    end tell
end if

Dans mon implémentation (que vous pouvez déduire de AppleScript):

  • Mes deux signatures Mail.app s'appellent "MyTemplate" et "MySignature". "MyTemplate" contient tout ce qui est statique - des trucs comme mon email adresse, etc. "MySignature" est celui que j'utilise avec mes messages.

  • Le fichier texte contenant mes guillemets s'appelle ".sigs.in" (pour qu'il n'apparaisse pas dans les fenêtres du Finder) et que toutes les citations sont séparés par une ligne contenant seulement "~ ### ~". Ce fichier réside dans mon répertoire personnel.

  • Mon entrée crontab consiste de

    * * * * * /Users/Steve/bin/MailRandomSig.app/Contents/MacOS/applet 

Le code AppleScript compilé se trouve dans / Users / Steve / bin (bien évidemment), et la partie "applet" correspond au binaire compilé que nous souhaitons exécuter.

J'ai testé cela et cela fonctionne à merveille. Chaque minute, cron lance mon script compilé qui met à jour la signature.

Le seul inconvénient est que si vous n'aimez pas la citation, vous devez attendre une minute pour que le script actualise la signature, puis resélectionnez la signature dans le sélecteur déroulant de la fenêtre de composition du message. (J'ai deux signatures - l'une statique, l'autre la sortie de mon script - pour contourner ce problème.)

Steve
la source
Je faisais quelque chose de très similaire à cela, mais en utilisant launchd et un script PHP pour modifier le fichier de signature réel. Cela fonctionnait auparavant, mais depuis Mavericks, il semble que les fichiers de signature soient mis en cache pendant le chargement de l'application. La mise à jour manuelle de la signature ou le redémarrage de l'application le rafraîchirait. Mais il semble qu'Applescript est la solution, puisqu'il affecte directement l'application en cours d'exécution au lieu des fichiers de signatures en cache situés à l'arrière.
James Alday