Automatisch de juiste aanhef in een e-mail plaatsen

Eerder hebben we gezien dat je met AppleScript de inhoud van een e-mail kunt ophalen. Dat hebben we onder andere gebruikt hebben om de route te vinden naar een adres in een e-mail handtekening.

Een andere nuttige optie is AppleScript te gebruiken om de afzender van een e-mail op te halen. Zo hebben we ofwel de naam, of het e-mailadres, van de persoon in kwestie. Gebruik ik voor allerlei dingen.

Laten we eerst kijken hoe we dat doen:

set returnEmail to false
set returnName to true

tell application "Mail"
	set selectedMessages to selection
	set theMessage to missing value
	
	if (count of selectedMessages) > 0 then
		set theMessage to item 1 of selectedMessages
	end if
	
	if theMessage is not missing value then
		set theSender to (sender of theMessage as string)
		if (returnEmail and returnName) = true
		return theSender
		else if (returnEmail) = true
		return (extract address from theSender) as string
		else
		return (extract name from theSender) as string
		end if
		return ""
	end if
end tell

Dit lijkt heel erg op de methode die we gebruikte om de inhoud van een bericht op te halen, maar nu halen we de afzender op.

Standaard ziet dat er zo uit: Tessa Geldens tessa.geldens@example.com

Vaak zul je óf de naam, óf het e-mailadres willen, afhankelijk van je doel. In dit geval willen we de naam, en dus zetten we returnName bovenin op true, en returnEmail op false.

Nu kunnen we dit gebruiken in bijvoorbeeld een TextExpander snippet, of een sneltoets die we uitvoeren via een tool als Keyboard Maestro.

Met wat aanpassingen om de code op te schonen kom je dan bijvoorbeeld hier op uit:

set greetings to {"Hoi", "Hey", "Hi"}

tell application "Mail"
	set selectedMessages to selection
	set theMessage to missing value
	set theSenderName to ""
	
	if (count of selectedMessages) > 0 then
		set theMessage to item 1 of selectedMessages
	end if
	
	if theMessage is not missing value then
		set theSender to (sender of theMessage as string)
		set theSenderName to ((extract name from theSender) as string)
		set AppleScript's text item delimiters to " "
		
		-- we doen hier de aanname dat het eerste woord in de naam de voornaam is
		-- dit gaat dus goed voor bijvoorbeeld "Anne-Fleur", maar niet voor "Anne Fleur"
		-- tenzij je vaak te maken hebt met dergelijke namen is dat een prima acceptabel om met de hand te corrigeren
		set theFirstName to text item 1 of theSenderName
		set AppleScript's text item delimiters to ""
	end if
	
	set randomGreetingIndex to random number from 1 to count of greetings
	set randomGreeting to item randomGreetingIndex of greetings as string
	
	return randomGreeting & " " & theFirstName & ",

"
end tell

Zet dit in je TextExpander snippet, met het type op “AppleScript”, en je kunt gewoon in een e-mail je afkorting typen, en automatisch zal er “[Hoi/Hey/Hi] [voornaam]” verschijnen!

Dit scheelt ook weer voor typefouten, zeker als je mensen moet mailen met een lastige naam. 1


  1. Zoals “Martijn”, want het aan e-mails dat ik krijg waar mensen me “Martin” of zelfs “Mattias” noemen…) ↩︎