|
An application page containing the cfmail tag dynamically generates e-mail messages
based on the tag settings. Some of the tasks that you can accomplish with cfmail include
the following:
Sending a mail message in which the data the user enters
in an HTML form determine the recipient and contents
Using a query to send a mail message to a database-driven
list of recipients
Using a query to send a customized mail message, such as
a billing statement, to a list of recipients that is dynamically
populated from a database
Sending form-based e-mailIn
the following example, the contents of a customer inquiry form submittal
are forwarded to the marketing department. You could also use the
same application page to insert the customer inquiry into the database.
You include the following code on your form so that it executes
when users enter their information and submit the form:
<cfmail
from="#Form.EMailAddress#"
to="marketing@MyCompany.com,sales@MyCompany.com"
subject="Customer Inquiry">
A customer inquiry was posted to our website:
Name: #Form.FirstName# #Form.LastName#
Subject: #Form.Subject#
#Form.InquiryText#
</cfmail>
Sending query-based e-mailIn
the following example, a query (ProductRequests) retrieves a list
of the customers who inquired about a product during the previous
seven days. ColdFusion sends the list, with an appropriate header
and footer, to the marketing department:
<cfmail
query="ProductRequests"
from="webmaster@MyCompany.com"
to="marketing@MyCompany.com"
subject="Widget status report">
Here is a list of people who have inquired about
MyCompany Widgets during the previous seven days:
<cfoutput>
#ProductRequests.FirstName# #ProductRequests.LastName# (#ProductRequests.Company#) - #ProductRequests.EMailAddress#&##013;
</cfoutput>
Regards,
The webmaster
webmaster@MyCompany.com
</cfmail>
Reviewing the codeThe following table describes the code:
Code
|
Description
|
<cfoutput>
#ProductRequests.FirstName# #ProductRequests.LastName# (#ProductRequests.Company#) - #ProductRequests.EMailAddress#&##013;
</cfoutput>
|
Presents a dynamic list embedded within
a normal message, repeating for each row in the ProductRequests
query. Because the cfmail tag specifies a query,
the cfoutput tag does not use a query attribute.
The &##013; forces a carriage return between
output records.
|
Sending e-mail to multiple recipientsIn addition to simply using a comma-delimited
list in the to attribute of the cfmail tag, you can send e-mail to
multiple recipients by using the query attribute
of the cfmail tag. The following examples show
how you can send the same message to multiple recipients and how
you can customize each message for the recipient.
Sending a simple message to multiple recipientsIn the following example, a query (BetaTesters) retrieves
a list of people who are beta testing ColdFusion. This query then
notifies each beta tester that a new release is available. The contents
of the cfmail tag body are not dynamic. What is
dynamic is the list of e-mail addresses to which the message is
sent. Using the variable #TesterEMail#, which refers
to the TesterEmail column in the Betas table, in the to attribute,
enables the dynamic list:
<cfquery name="BetaTesters" datasource="myDSN">
SELECT * FROM BETAS
</cfquery>
<cfmail query="BetaTesters"
from="beta@MyCompany.com"
to="#BetaTesters.TesterEMail#"
subject="Widget Beta Four Available">
To all Widget beta testers:
Widget Beta Four is now available
for downloading from the MyCompany site.
The URL for the download is:
http://beta.mycompany.com
Regards,
Widget Technical Support
beta@MyCompany.com
</cfmail>
Customizing e-mail for multiple recipientsIn the
following example, a query (GetCustomers) retrieves the contact
information for a list of customers. The query then sends an e-mail
to each customer to verify that the contact information is still
valid:
<cfquery name="GetCustomers" datasource="myDSN">
SELECT * FROM Customers
</cfquery>
<cfmail query="GetCustomers"
from="service@MyCompany.com"
to="#GetCustomers.EMail#"
subject="Contact Info Verification">
Dear #GetCustomers.FirstName# -
We'd like to verify that our customer
database has the most up-to-date contact
information for your firm. Our current
information is as follows:
Company Name: #GetCustomers.Company#
Contact: #GetCustomers.FirstName# #GetCustomers.LastName#
Address:
#GetCustomers.Address1#
#GetCustomers.Address2#
#GetCustomers.City#, #GetCustomers.State# #GetCustomers.Zip#
Phone: #GetCustomers.Phone#
Fax: #GetCustomers.Fax#
Home Page: #GetCustomers.HomePageURL#
Please let us know if any of this
information has changed, or if we must
get in touch with someone else in your
organization regarding this request.
Thanks,
Customer Service
service@MyCompany.com
</cfmail>
Reviewing the codeThe following table describes the code and its
function:
Code
|
Description
|
<cfquery name="GetCustomers" datasource="myDSN">
SELECT * FROM Customers
</cfquery>
|
Retrieves all data from the Customers table
into a query named GetCustomers.
|
<cfmail query="GetCustomers"
from="service@MyCompany.com"
to="#GetCustomers.EMail#"
subject="Contact Info Verification">
|
Uses the to attribute of cfmail,
the #GetCustomers.Email# query column causes ColdFusion
to send one message to the address listed in each row of the query.
Therefore, the mail body does not use a cfoutput tag.
|
Dear #GetCustomers.FirstName# -
......
Company Name: #GetCustomers.Company#
Contact: #GetCustomers.FirstName# #GetCustomers.LastName#
Address:
#GetCustomers.Address1#
#GetCustomers.Address2#
#GetCustomers.City#, #GetCustomers.State# #GetCustomers.Zip#
Phone: #GetCustomers.Phone#
Fax: #GetCustomers.Fax#
Home Page: #GetCustomers.HomePageURL#
|
Uses other query columns (#GetCustomers.FirstName#, #GetCustomers.LastName#,
and so on) within the cfmail section to customize
the contents of the message for each recipient.
|
Digitally signing e-mailTo add digital signature to your mail, specify the attributes sign, keystore, keystorepassword, keyalias,
and keypassword as provided in the following example:
<cfmail from="Sender@Company.com" server="sendmail.myCo.com" sign="true" keystore="C:\OpenSSL\bin\hello.jks" keystorepassword="digital" to="Recepient@Company.com" keyalias="crypto" keypassword="signature" subject="Mail with Digital Signature">
To add digital signature to all the mails you send, instead of
adding the attributes to the tag, specify the settings in the Server
Settings > Settings page of the ColdFusion Administrator.
The supported keystores are JKS and PKCS12.
Due to import control restrictions in various countries, the
policy files (local_policy.jar and US_export_policy.jar) support
only limited cryptography. If the key strength exceeds the limit,
you might encounter the error suggesting that the keystore cannot
be loaded. If you are from an eligible country, you can download
the unlimited strength version of the policy files and replace the default
cryptography JAR files with them. The files are available on the
Java SDK web site.
|
|
|