In 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 a customize each message for the recipient.
Sending a simple message to multiple recipients
In 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 recipients
In 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 the above information has changed, or if we need to get in touch with someone else in your organization regarding this request. Thanks, Customer Service service@MyCompany.com </cfmail>
The following table describes the code and its function:
Code |
Description |
---|---|
<cfquery name="GetCustomers" atasource="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 one message to be sent 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. |