Mail.app is Apple's built-in Mac OS X e-mail client, which defies all attempts (both good or bad) at classification. One of its worst shortcomings (of which there are many) is its inability to deal with plain UNIX mailbox formats directly via the filesystem (it will import and export them, but not use them natively).
- Widemail, a variant on Letterbox for Leopard. Has a very annoying two-line preview approach, though.
- Adding a Vertical Preview Pane - no longer works, see Letterbox
- Enabling Debug Logging
- Using S-MIME Certificates - still works.
- Mail Scripts (AppleScript tools for numerous useful tricks, like removal of duplicate messages)
- Mail Plugins (also keeps track of suggestions for improvements to Mail.app), where I found:
- OMiC, to handle winmail.dat attachments.
- Mail Act-On
- MailTags
- Mail.appetizer
- mailpriority
- There's also Mail Act On for quick flagging/coloring/moving of messages.
- IMAP-IDLE, which adds IMAP IDLE support to Mail.app 2.0 (obsoleted with Leopard).
- imapcheck, a plugin to force Mail.app to perform a full refresh of the IMAP tree.
- Palm conduits (also for Entourage).
Fiddling With The SQLite Envelope Index
This little AppleScript automates the process of compacting one of the internal index tables (the envelope index) that usually ends up full of crud:
tell application "Mail" to quit
set sizeBefore to do shell script "ls -lah ~/Library/Mail | grep -E 'Envelope Index$' | awk {'print $5'}"
do shell script "/usr/bin/sqlite3 'Envelope Index' vacuum"
set sizeAfter to do shell script "ls -lah ~/Library/Mail | grep -E 'Envelope Index$' | awk {'print $5'}"
display dialog ("Mail index before: " & sizeBefore & return & "Mail index after: " & sizeAfter & return & return & "Enjoy the new speed!")
tell application "Mail" to activate
Mailbox Format Notes
These were valid for pre-Leopard versions - they might not be valid still.
- emlx to mbox Converter
- Mark Rowe's notes (includes a duplicate removal script)
.emlx flags field (via jwz):
00 read 1 << 0 01 deleted 1 << 1 02 answered 1 << 2 03 encrypted 1 << 3 04 flagged 1 << 4 05 recent 1 << 5 06 draft 1 << 6 07 initial (no longer used) 1 << 7 08 forwarded 1 << 8 09 redirected 1 << 9 10-15 attachment count 3F << 10 (6 bits) 16-22 priority level 7F << 16 (7 bits) 23 signed 1 << 23 24 is junk 1 << 24 25 is not junk 1 << 25 26-28 font size delta 7 << 26 (3 bits) 29 junk mail level recorded 1 << 29 30 highlight text in toc 1 << 30 31 (unused)
Bugs:
- Mail.app 2.0.5 loses messages if your default SMTP server is unavailable and you reflexively click OK when prompted to accept the next alternative SMTP server without waiting for the message to be re-rendered. This causes Mail.app to send an empty message and lose your original e-mail (filed as #4460682 on 2005-02-28).
- Mail.app 2.0 will not display meeting requests, cancellations or read receipts when used against an Exchange server (which means they will simply pile up in your account, and that Mail.app is totally useless for backing up/archiving Exchange mail via IMAP because it won't archive those - it won't even list them). To be filed on Radar when I understand this better.
- Mail.app 2.1 does not seem to be able to use SOCKS for SMTP (or gets thoroughly confused by it when you have multiple SMTP servers defined). Filed as #4678812 on 2006-08-13, marked as a "known issue" on 2006-08-30.
IMAP and AppleScript Support
There seems to be some odd change in Leopard where a script such as:
tell application "Mail"
set theMessages to (every message in mailbox "INBOX" of account "News" whose read status = true and flagged status = false and deleted status = false)
try
tell application "Mail"
delete theMessages
end tell
end try
end tell
...no longer seems to truly delete the messages. They vanish from the message list, but return afterwards upon the next folder refresh. A workaround could be:
tell application "Mail"
set theMessages to (every message in mailbox "INBOX" of account "News" whose read status = true and flagged status = false and deleted status = false)
try
tell application "Mail"
move theMessages to mailbox "Deleted Messages" of account "News"
end tell
end try
end tell
...which produces the desired effect.