Definitive Source for Code to Automate E-Mailing Forms


You will find that at some point you need to be a little more clever with sending mail than what InfoPath will allow you to do with just the GUI and dataconnections.  A colleague of mine, Scott Heim, sent me an awesome little XSN file that had 4 buttons in it that highlighting four different ways to kick off e-mail programmatically from InfoPath.   If you e-mail me I'll send you the file.  The code however is pretty easy to follow and is posted here for your enjoyment.


 


Sub btnShowMailItem_OnClick(eventObj)


XDocument.UI.ShowMailItem "yourname@microsoft.com", "", "", "Subject: Test", "Body: Test"


End Sub '


Sub btnMailEnvelope_OnClick(eventObj)


Dim oEnvelope


Set oEnvelope = Application.ActiveWindow.MailEnvelope


oEnvelope.Subject = "Subject: Test"


oEnvelope.To = yourname@microsoft.com


oEnvelope.Visible = true


End Sub


Sub btnOutlook_OnClick(eventObj)


Dim objOutlook


Dim objOutlookMsg


Dim objOutlookRecip


Dim objOutlookAttach


Dim frmSavePath


'Create the Outlook session.


Set objOutlook = CreateObject("Outlook.Application")


Set objOutlookMsg = objOutlook.CreateItem(0) 'olMailItem


With objOutlookMsg


'Add the To recipient(s) to the message.


Set objOutlookRecip = .Recipients.Add(yourname@microsoft.com)


objOutlookRecip.Type = 1 'olTo '


'Add the CC recipient(s) to the message.


' Set objOutlookRecip = .Recipients.Add(someone@somewhere.com)


' objOutlookRecip.Type = 2 'olCC '


' 'Add the BCC recipient(s) to the message.


' Set objOutlookRecip = .Recipients.Add(someoneelse@somewhere.com)


' objOutlookRecip.Type = 3 'olBCC


'Set the Subject, Body, and Importance of the message.


.Subject = "This is an Automation test with Microsoft Outlook"


.body = "This is the body of the message"


' **NOTE: if you want the body of the message to be HTML, then use '.HTMLbody instead of just .body


.Importance = 2 'High importance


'Resolve each Recipient's name.


For Each objOutlookRecip In .Recipients


objOutlookRecip.Resolve


Next


'Display the message before sending


.display


'If you want to add the form as an attachment, you need to make sure it is saved first and then add that file as an attachment


'** NOTE: THIS REQUIRES THE FORM TO BE FULLY TRUSTED!!!


frmSavePath = "C:\MyForm.XML"


XDocument.SaveAs(frmSavePath)


Set objOutlookAttach = .Attachments.Add(frmSavePath)


End With


Set objOutlook = Nothing


Set objOutlookMsg = Nothing


Set objOutlookRecip = Nothing


Set objOutlookAttach = Nothing


End Sub

Comments (2)
  1. timpash says:

    Note from a reader:

    Please add a remark that as from Outlook 2007 or Exchange 2005, the usage of MAPI with Outlook or Exchange require seperate installation of "Microsoft Collaboration Data Objects (CDO) 1.2.1" from Mirosoft’s web site, else error message will occour when you will try to create the instance of the MAPI Session.

  2. hellonavneet says:

    How can I do same stuff from outside Infopath at serverside without launching infopath?

Comments are closed.

Skip to main content