I'd like new messages that I create, including replies to messages I receive, to automatically get a "Hi <name>," inserted in their first line. <name> should be the first name of the first recipient.

How can I create such an automation?


You can implement a mail merge using AppleScript. Gianugo Rabellino shared his initial AppleScript for creating such messages in Poor man’s mail merge in Apple Mail.

The comments on Rabellino's post suggest improvements and other approaches.

tell application "Mail" to set allAccounts to name of every account
choose from list allAccounts with title "Choose the Mail account to use..."
set theAccount to result as string

set subjectDialog to display dialog ¬
    "Enter the subject of the email to send" default answer "no subject"
set theSubject to text returned of subjectDialog

set sendOrPreview to the button returned of ¬
    (display dialog ¬
        "Send the messages right away or preview and send manually?" with title ¬
        "Send or Preview?" with icon caution ¬
        buttons {"Preview", "Send"} ¬
        default button 1)

set theText to (choose file with prompt "Pick a text file containing the email text")

set theContent to read theText

tell application "Finder"
    set addresses to paragraphs of ¬
        (read (choose file with prompt "Pick a text file containing email addresses, one by line"))
end tell

tell application "Mail"
    set activeAccount to account theAccount
    repeat with i from 1 to (the length of addresses)
        set newMessage to make new outgoing message ¬
            with properties {account:activeAccount, subject:theSubject, content:theContent}
        tell newMessage
            set sender to ¬
                ((full name of activeAccount & " < " & email addresses of activeAccount as string) & ">")
            make new to recipient at end of to recipients ¬
                with properties {address:(a reference to item i of addresses)}
            set visible to true
        end tell
        if sendOrPreview is equal to "Send" then
            send newMessage
        end if
    end repeat
end tell
| improve this answer | |

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .