When a Mi-Forms session is "Finished" the client can run DataPathExports if they are configured in the form. A common use case is to email a PDF or CSV representation of the data collected to an email address. In this case we email any PDF or CSV files created as a DataPathExport.
In the Script editor, double click AfterDataPathRun on the right side of the screen as seen here:
The script editor will then present you with this code:
<MiCode(FormScriptEventType.AfterDataPathsRun)> _ Public Sub Form_AfterDataPathsRun(ByVal e As AfterDataPathsRunEventArgs) End Sub
Select the blank space between lines of code here and paste the following code:
Dim EmailTo As String = "email@example.com" Dim EmailToName As String = "Mi-Corporation Sales Engineer" Dim EmailFrom As String = "firstname.lastname@example.org" Dim EmailFromName As String = "Mi-Corporation Support" If _component.Scope = MiCo.MiForms.Scope.Server_Processing Then Dim fileName As String = String.Empty Dim erl As New System.Collections.Generic.List(Of ExportResult) For Each er As ExportResult In _form.Validator.ExportResults erl.Add(er) fileName = System.IO.Path.GetFileNameWithoutExtension(er.ExpandedFilePath) Next Try Dim fromAddress As New MailAddress(EmailFrom, EmailFromName) Dim toAddress As New MailAddress(EmailTo, EmailToName) Using msg As New MailMessage(fromAddress, toAddress) msg.Body = "This will be the body of the message you are sending." & VbCrLf & "Thank you for your purchase." msg.Subject = (Me._form.Name & " (" & fileName & ")") ' Add the mail body - an HTML file attached to this form. For Each attData As AttachmentData In _form.Attachments If String.Compare(attData.Name, "Lead Generation.html") = 0 Then msg.Body = System.Text.UTF8Encoding.UTF8.GetChars(attData.BinaryData()) msg.Body = msg.Body.Replace("[filename]", fileName) End If Next ' Add pdf/csv file attachments to mail - they are datapaths of the form. For Each er As ExportResult In erl If er.Success And ( er.DataPathName = "PDF" Or er.DataPathName = "CSV" ) Then msg.Attachments.Add(New Attachment(er.ExpandedFilePath)) End If Next Dim client As New SmtpClient("localhost", 25) client.Send(msg) Me.RecordExportResult("Email", True, "Sent email", "Sent email to " & EmailToName & "(" & EmailTo & ")", "") End Using Catch ex As Exception Me.RecordExportResult("Email", False, ex.Message, ex.Message, ex.Message) e.CustomExportFailure = True e.CustomExportDetails = ex.Message End Try End If
You will want to modify the first four lines of code to reflect the email address of the sender and receiver. As a minor change, you could change the EmailTo address to be defined by a field on the form.
Now you have a flexible method to send email notifications of your completed forms!