Listing 1

<cfmail to="user@domain.com"
from="notifications@domain.com"
subject="Asset Updates – 9/4/2003"
server="smtp.domain.com"
username="username"
password="password">
...
</cfmail>

Listing 2

<cfquery name="selNotificationQueue"
datasource="#request.datasource#">
SELECT
COUNT(EntryId) As EntryCount
FROM
NotificationQueue
WHERE
EntryWasSent = 0
</cfquery>

Listing 3

<cffile action="read"
file="#request.notificationHeaderText#"
variable="header">
<cffile action="read"
file="#request.notificationFooterText#"
variable="footer">

Listing 4

<cfquery name="selUsers" datasource="#request.datasource#">
SELECT
UserId, UserFullName, UserEmail
FROM
Users
</cfquery>

Listing 5

<cfloop query="selUsers">
<cfquery name="selEntriesForUser"
datasource="#request.datasource#">
SELECT
EntryId, EntryText
FROM
NotificationQueue
WHERE
EntryWasSent = 0
AND
dbo.IsUserExcluded(AssetId,
#selUsers.UserId#) = 0
</cfquery>

Listing 6

<cfif selEntriesForUser.RecordCount>
<cfset subject = "Asset Updates - " &
DateFormat(Now(), "m/d/yyyy")>
<cfset content = header>
<cfloop query="selEntriesForUser">
<cfset content = content &
selEntriesForUser.EntryText & Chr(13) & Chr(10)>
</cfloop>
<cfset content = content & Chr(13) &
Chr(10) & footer>

Listing 7

<cfmail
to="#selEntriesForUser.EntryEmail#"
from="#request.notificationFromEmail#"
subject="#subject#"
server="smtp.domain.com"
username="username"
password="password">
#content#
</cfmail>
</cfif>
</cfloop>

Listing 8

<!--- Now that these Entries have been sent,
mark them as old --->
<cfquery name="updNotificationQueue"
datasource="#request.datasource#">
UPDATE
NotificationQueue
SET
EntrySent = 1,
EntrySentDate = GetDate()
WHERE
EntryId IN
(#ValueList(selNotificationQueue.EntryId)#)
</cfquery>
</cfif>