Skip to content

Instantly share code, notes, and snippets.

@ttscoff
Last active December 8, 2023 22:00
Show Gist options
  • Star 48 You must be signed in to star a gist
  • Fork 12 You must be signed in to fork a gist
  • Save ttscoff/3728277 to your computer and use it in GitHub Desktop.
Save ttscoff/3728277 to your computer and use it in GitHub Desktop.
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
@fgardavaud
Copy link

The method of @Lapsus work for me on Mojave macOS version

@aiBR3
Copy link

aiBR3 commented Nov 28, 2022

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