Tag: applescript

  • Using AppleScript to mail merge with attachments

    Here is some code that is useful for sending batch emails with Mac Mail to recipients using information stored in a text file. This also enables attaching specific files to the message, again based on the information in the text file.

    
    
    set mol_list to {}
    -- This will ask you to select a file containing the intended recepients and their emails --
    -- I also include in this file information needed to link to an attachment --
    set theFile to choose file with prompt "Select a text file:"
    set theFileReference to open for access theFile
    -- Note that the line end here is an old Mac return (not MSFT carriage return) --
    set theFileContents to read theFileReference using delimiter return
    close access theFileReference

    -- Now parse the file that was selected. Here I'm parsing a tab-delimited file. --
    set text item delimiters to tab
    -- Loop through the file one line at a time --
    repeat with i from 1 to count of theFileContents
        set theLine to text items of item i of theFileContents
        copy theLine to the end of mol_list
        -- this identifies each column in the tab-delimited file --
        set stid to item 1 of theLine
        set first_name to item 2 of theLine
        set last_name to item 3 of theLine
        set email_add to item 4 of theLine
        -- specify the location of the file to attach --
        -- here I'm pasting together information from the tab-delimited file to point to the file for this particular recipient --
        set file_attach to "Macintosh HD:Users:USERID:file_" & stid & ".pdf"
        -- Set the message, again pasting together info from the recipient file --
        set message_content to "Dear " & first_name & ",
       
        This is my email to you containing your information.
       
        Andrew
       
        "
        -- Now push this to Mac's mail software
        tell application "Mail"
            -- Create a new message with the message above and the subject --
            set theMessage to make new outgoing message with properties {visible:true, subject:"Set the subject here", content:message_content}
            -- Set the address for this recipient --
            tell theMessage
                make new to recipient at end of to recipients with properties {address:email_add}
            end tell
            -- Add the attachment to this recipient --
            tell content of theMessage
                make new attachment with properties {file name:file_attach as alias} at after last paragraph
            end tell
           
            -- Add a little delay to attach larger files to the email before sending --
            delay 2
           
            -- Send the message to this recipient --
            send theMessage
        end tell
       
    end repeat