Over the last several weeks, several people asked if they could do a mail merge from Contacts to Outlook email directly. Yes, it is possible to insert contact data into an email message, merge style, although it's generally easier to merge to email using Microsoft Word's Mail Merge.
Your options are:
Use VBA to start a new email message and insert contact fields into the message. This works great for the subject field (and the To field). If you are inserting contact fields into the body, it works best if the message is short or the contact fields are added to the top of the message body. The deferred birthday greeting to contact code sample uses this method.
Create a template with bookmarks for the fields you want to use. The code sample below uses this method to merge a contact's data to a new message.
Mail merge code sample
To use this code:
- Set macro security to low for testing.
- Download the template.
- Copy and paste the code into the VBA editor.
- Set a reference to Word object model in the VB Editor's Tools, References menu
- Make sure the path to the template is correct in the code.
- Select a contact in Outlook and run the macro.
Public Sub MailMergeNoWord() If TypeName(ActiveExplorer.Selection.Item(1)) = "ContactItem" Then Set oContact = ActiveExplorer.Selection.Item(1) Dim objItem As MailItem Set objItem = Application.CreateItemFromTemplate("C:\path\to\template\bookmark-test.oft") With objItem .To = oContact.Email1Address .Subject = "This is the subject" ' send from another address; sendas permission required .SentOnBehalfOfName = "email@example.com" .Display End with 'after the message is open and addressed to the contact, use reference word to put fields into bookmarks Dim objWord As Word.Application Dim objDoc As Word.Document Dim objSel As Word.Selection On Error Resume Next 'Set objItem = Application.ActiveInspector.CurrentItem If objItem.Class = olMail Then Set objInsp = objItem.GetInspector Set objDoc = objInsp.WordEditor Set objWord = objDoc.Application Set objSel = objWord.Selection 'create a bookmark, repeat these two lines for each bookmark objSel.GoTo What:=wdGoToBookmark, Name:="name" objSel.TypeText Text:=oContact.FirstName objSel.GoTo What:=wdGoToBookmark, Name:="fullname" objSel.TypeText Text:=oContact.FirstName & " " & oContact.LastName objSel.GoTo What:=wdGoToBookmark, Name:="email" objSel.TypeText Text:=oContact.Email1Address objSel.GoTo What:=wdGoToBookmark, Name:="company" objSel.TypeText Text:=oContact.CompanyName End If Else MsgBox "Sorry, you need to select a contact" End If Set objItem = Nothing Set objSel = Nothing Set objWord = Nothing Set objInsp = Nothing End Sub