Last active
December 8, 2023 22:00
-
-
Save ttscoff/3728277 to your computer and use it in GitHub Desktop.
Speed up Mail.app
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(* | |
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 |
I'm seeing the same issue on Mojave. I haven't found a solution yet.
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.
The method of @Lapsus work for me on Mojave macOS version
The updated code should be (up to macOS 13 Ventura):
(*
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
https://gist.github.com/ttscoff/3728277
*)
tell application "Mail" to quit
set os_version to do shell script "sw_vers -productVersion"
set mail_version to "~/Library/Mail/V2/Maildata/Envelope\\ Index"
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"
if "10.14" ≤ os_version then set mail_version to "~/Library/Containers/com.apple.mail/Data/Library/Mail/V6/MailData/Envelope\\ Index"
if "10.15" ≤ os_version then set mail_version to "~/Library/Containers/com.apple.mail/Data/Library/Mail/V7/MailData/Envelope\\ Index"
if "11" ≤ os_version then set mail_version to "~/Library/Containers/com.apple.mail/Data/Library/Mail/V8/MailData/Envelope\\ Index"
if "12" ≤ os_version then set mail_version to "~/Library/Containers/com.apple.mail/Data/Library/Mail/V9/MailData/Envelope\\ Index"
if "13" ≤ os_version then set mail_version to "~/Library/Containers/com.apple.mail/Data/Library/Mail/V10/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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.