Instantly share code, notes, and snippets.

Embed
What would you like to do?
Speed up Mail.app
(*
Speed up Mail.app by vacuuming the Envelope Index
Code from: http://www.hawkwings.net/2007/03/03/scripts-to-automate-the-mailapp-envelope-speed-trick/
Originally by "pmbuko" with modifications by Romulo
Updated by Brett Terpstra 2012
Updated by Mathias Törnblom 2015 to support V3 in El Capitan and still keep backwards compability
Updated by @lbutlr for V5 and Container folder in High Sierra and use du
*)
tell application "Mail" to quit
set os_version to do shell script "sw_vers -productVersion"
set mail_version to "V2"
considering numeric strings
if "10.10" os_version then set mail_version to "~/Library/Mail/V3/Maildata/Envelope\\ Index"
if "10.12" < os_version then set mail_version to "~/Library/Mail/V4/Maildata/Envelope\\ Index"
if "10.13" os_version then set mail_version to "~/Library/Containers/com.apple.mail/Data/Library/Mail/V5/Maildata/Envelope\\ Index"
end considering
set sizeBefore to do shell script "du -h " & mail_version & "| awk {'print $1'}"
do shell script "/usr/bin/sqlite3 " & mail_version & " vacuum"
set sizeAfter to do shell script "du -h " & mail_version & "| awk {'print $1'}"
display dialog ("Mail index before: " & sizeBefore & return & "Mail index after: " & sizeAfter & return & return & "Enjoy the new speed!")
tell application "Mail" to activate
@clmac

This comment has been minimized.

clmac commented Oct 27, 2017

This script is not compatible with oldest version (before 10.10). To allow this, you need to change the line set mail_version to "V2" by set mail_version to "~/Library/Mail/V2/Maildata/Envelope\\ Index"

@Cyrkhan

This comment has been minimized.

Cyrkhan commented Oct 3, 2018

It seems the script does not work on Mac OS 10.14 Mojave, but I don't understand why.
I added the line if "10.14" ≤ os_version then set mail_version to "~/Library/Containers/com.apple.mail/Data/Library/Mail/V6/MailData/Envelope\\ Index"

but running the script gives the error :
Error: unable to open database \"/Users/MyName/Library/Containers/com.apple.mail/Data/Library/Mail/V6/MailData/Envelope Index\": unable to open database file" number 1

However, the path seems correct.

Setting "~/Library/Mail/V6/Maildata/Envelope\\ Index" instead of "/Users/MyName/Library/Containers/com.apple.mail/Data/Library/Mail/V6/MailData/Envelope Index\" gives the same error.

@akaman

This comment has been minimized.

akaman commented Nov 9, 2018

I'm seeing the same issue on Mojave. I haven't found a solution yet.

@Lapsus

This comment has been minimized.

Lapsus commented Dec 5, 2018

This happens because of security measures. Open System Preferences -> Security & Privacy -> Privacy tab and grant "Full Disk Access" to Terminal.app or the automator, where ever you run the applescript.

Dont forget to revoke permissions after you finished reorganizing the index.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment