How to Send Confirmation Emails to Form Submitters in Mura CMS
A question came up in the Mura CMS forums about "sending a confirmation message automatically" that I thought other developers and/or users of Mura CMS might find helpful.
When you create a form in Mura CMS, there are a couple of convenient fields available. One field allows for a comma-separated list of email addresses to receive notification whenever the form is submitted. Another field is a text area for displaying a "confirmation message" to the person who submits the form.
One field that isn't currently available is a checkbox to "send copy to submitter." A good reason for this could simply be that since a form could contain any number of unique fields and field names, it could be very difficult to programmatically allow for something as unique as this.
So I wrote a simple custom display object that will essentially check for a form field called "email" and if it is valid, send a confirmation message to the submitter (assuming the submitter's email is contained within the "email" form field). Lost yet? I hope not.
First, you'll want to create a custom display object. you can copy the code below and save it to/as "[siteid]/includes/display_objects/custom/dsp_email_confirmation.cfm"
<cfsilent>
<!---
Document: dsp_email_confirmation.cfm
Version: 20091005.01
Author: Steve Withington | www.stephenwithington.com
Purpose: I send email confirmations to form submitters.
Instructions: Assuming you've placed this file in/as:
"[siteid]/includes/display_objects/custom/dsp_email_confirmation.cfm"
Go to "Forms" in your admin, select the form you want to use this script
in, go to the "Confirmation Message" text area, then copy + paste this:
[mura]dspInclude('display_objects/custom/dsp_confirmation_email.cfm')[/mura]
This could be the only line of text in your Confirmation Message text area
since now you can modify the confirmation text below. However, any
text in the "Confirmation Message" form field will also be display on
the screen.
The confirmationText below can even be a dynamic field that's passed in
on form submission, etc.
--->
<cfsavecontent variable="confirmationText">
<cfoutput>Thank you for for your inquiry. A representative will contact you shortly. For immediate assistance, feel free to call 800.555.1212.</cfoutput>
</cfsavecontent>
</cfsilent>
<cfoutput><p class="success">#confirmationText#</p></cfoutput>
<cfif structKeyExists(request, "email") and isValid("email", request.email)>
<cfsilent>
<cfset site = application.settingsManager.getSite(request.siteID) />
<cfset success=true />
<cftry>
<cfset email=application.serviceFactory.getBean('mailer') />
<cfset email.sendText(confirmationText, form.email, form.email, site.getSite(), request.siteid, form.email) />
<cfcatch>
<cfset success=false />
</cfcatch>
</cftry>
</cfsilent>
<cfoutput>
<cfif success>
<!--- if successful, a confirmation message can be displayed here --->
<p class="success"><em>A confirmation has also been sent to your email.</em></p>
<cfelse>
<!--- if an error occurs, an error message can be displayed here --->
<p class="error">Sorry, we experienced a problem in our attempt to send you a confirmation via email.</p>
</cfif>
</cfoutput>
<cfelse>
<!--- you can display an error message if the email address provided is not valid --->
<p class="error">Unfortunately, the email address you provided was not a valid email address.</p>
</cfif>
Next, you'll want to go to your "Forms" section in your admin area, select the form you want to use this script in, go to the "Confirmation Message" text area, then copy and past this in:
[mura]dspInclude('display_objects/custom/dsp_email_confirmation.cfm')[/mura]
You can then simply modify the confirmation message within the script, or even pass one in dynamically.
Hope this helps!
Comments
I did note a minor error in the notes and in the mura tag.
One says
dsp_email_confirmation.cfm
and one says
dsp_confirmation_email.cfm
easy enough fix but generated an error before I figured out why so thought I'd mention it.
How would I set this out to send out the confirmation with graphics and images as opposed to a text email?
It really wouldn't be all that much different. You could create a variable called 'confirmationHTML' which could essentially be a cfsavecontent of an external html or cfm file and then instead of
email.sendText(confirmationText, form.email, form.email, site.getSite(), request.siteid, form.email)
you could use something like:
email.sendHTML(confirmationHTML, form.email, form.email, site.getSite(), request.siteid, form.email)
Good luck!
Does this method still send an email to the administrator of the website? So in essence does it send 2 emails out... one to the submitter and the other to the admin?
yes, mura will also send emails to the email address (or list of email addresses), if any, that have been entered in the 'Send data to emal address' field when the form was created/edited.
May need to update your snippet slightly and add in a redirect there. Need to allow the CMS user to update the content of the confirmation page.
Very helpful post though.
fyi, there's a field called 'Confirmation Message' that CMS users can edit for exactly that reason.
Unless i can use the above snippet, as well as a success message underneath? Intereesting.
Thanks again
correct, you can use both ... so something like:
<p>Thank you! A representative will contact you within the next 24/hours. If you need immediate assistance, please call 800.555.1212</p>
[mura]dspInclude('display_objects/custom/forms/dsp_email_confirmations.cfm')[/mura]
Thanks for this post! The method works great.
My only question is in regards to the HTML confirmation email. I setup a test HTML file and set that to email to the user, but the email that gets delivered actually has all of the HTML in the body...it's not rendering the tags.
Any advice?
Thanks!
Works great now! Thanks Steve!
I'd simply like to override the email address entered into the "Send data to email address" field of the edit form screen, based on a selected field of the form.
so if MyField = Y send to abc@xyz.com
if MyField = Z send to xyz@abc.com
that's it.
Thanks you, any help is appreciated!