I recently switched from Thunderbird to Mail.app, on my MacBook Pro. For years, I’ve been appending random fortunes to the bottom of my email messages, and I wanted this feature for Mail.app, too.
When I used Emacs’ VM to read mail, I merely had to hack together a tiny bit of Elisp and wire it into a VM hook.
When I moved to Thunderbird, I simply wrote a small shell script to concatenate
a signature prefix file with a random fortune; I then told cron(8) to run
that shell script once a minute, to create a new .signature
file. I pointed
Thunderbird at that generated .signature
file.
But, as it turns out, you can’t point Mail.app at an external .signature
file, so the Thunderbird solution won’t work.
The answer is to write a small bit of AppleScript (one of the stranger programming languages I’ve ever used). The AppleScript script:
- Uses the same signature prefix file that the Thunderbird shell script uses.
- Concatenates the contents of that prefix file with the output from my
fortune
program. - Tells Mail.app to replace the named signature. (I have more than one signature, and I only want to append a random fortune to one of them.)
Here’s the AppleScript code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
The final piece of the puzzle is another cron(8) entry, in my personal
crontab
:
* * * * * osascript $HOME/AppleScripts/fortune-sig.scpt
Conceptually, this solution is the same as the one for Thunderbird; it’s just a different implementation.