here is my ADF code...
<EventClass>
<EventClassName>URFReportEvents</EventClassName>
<Schema>
<Field>
<FieldName>URFReportEventID</FieldName>
<FieldType>int</FieldType>
<FieldTypeMods>not null</FieldTypeMods>
</Field>
</Schema>
<!-- Chronicle table for URF Report -->
<Chronicles>
<Chronicle>
<ChronicleName>URFReportEventsChron</ChronicleName>
<SqlSchema>
<SqlStatement>
IF EXISTS(SELECT name FROM dbo.sysobjects WHERE name =
'URFReportEventsChron')
DROP TABLE URFReportEventsChron
CREATE TABLE URFReportEventsChron
(
DistributionCompanyID int,
NotifyDate datetime
)
</SqlStatement>
</SqlSchema>
</Chronicle>
</Chronicles>
</EventClass>
------------- Subscription Class ---------------------
<SubscriptionClass>
<SubscriptionClassName>URFReportSubscriptions</SubscriptionClassName>
<Schema>
<Field>
<FieldName>DeviceName</FieldName>
<FieldType>nvarchar(255)</FieldType>
<FieldTypeMods>not null</FieldTypeMods>
</Field>
<Field>
<FieldName>SubscriberLocale</FieldName>
<FieldType>nvarchar(10)</FieldType>
<FieldTypeMods>not null</FieldTypeMods>
</Field>
<Field>
<FieldName>DistributionCompanyName</FieldName>
<FieldType>nvarchar(100)</FieldType>
<FieldTypeMods>not null</FieldTypeMods>
</Field>
</Schema>
<!-- User Rejected File Report Event Rule-->
<EventRules>
<EventRule>
<RuleName>URFReportEventRule</RuleName>
<Action>
--event rule
SELECT dbo.URFReportNotificationsNotify(s.SubscriberId,
s.DeviceName,
s.SubscriberLocale,
l.DistributionCompanyName
)
FROM NSURFReportSubscriptionsSubscriptions s,
RapsNotification..URFReportEvents l
WHERE l.DistributionCompanyName = s.DistributionCompanyName
and l.URFReportEventID = ( select max(URFReportEventID) from
RapsNotification..URFReportEvents )
and l.DistributionCompanyID not in ( select DistributionCompanyID from
URFReportEventsChron )
--insert into chronicles table
INSERT INTO URFReportEventsChron(DistributionCompanyID,NotifyDate)
SELECT l.DistributionCompanyID as DistributionCompanyID,NotifyDate = getdate()
FROM RapsNotification..URFReportEvents l
where l.DistributionCompanyID not in (Select DistributionCompanyID from
URFReportEventsChron)
--delete from events table
delete from NSURFReportEventsEvents
</Action>
<EventClassName>URFReportEvents</EventClassName>
</EventRule>
</EventRules>
<NotificationClass>
<NotificationClassName>URFReportNotifications</NotificationClassName>
<Schema>
<Fields>
<Field>
<FieldName>DistributionCompanyName</FieldName>
<FieldType>nvarchar(100)</FieldType>
</Field>
</Fields>
</Schema>
<!-- Content formatter for User Rejected File Report -->
<ContentFormatter>
<ClassName>XsltFormatter</ClassName>
<Arguments>
<Argument>
<Name>XsltBaseDirectoryPath</Name>
<Value>%_BaseDirectoryPath_%\AppDefinition</Value>
</Argument>
<Argument>
<Name>XsltFileName</Name>
<Value>URFReport.xslt</Value>
</Argument>
</Arguments>
</ContentFormatter>
<MulticastDelivery>false</MulticastDelivery>
<!-- Protocols for User Rejected File Report -->
<Protocols>
<Protocol>
<ProtocolName>DeliveryProtocol</ProtocolName>
<Fields>
<Field>
<FieldName>Subject</FieldName>
<SqlExpression>'User Rejected File Report Notification'+CONVERT
(NVARCHAR(30), GETDATE())</SqlExpression>
</Field>
<Field>
<FieldName>BodyFormat</FieldName>
<SqlExpression>'html'</SqlExpression>
</Field>
<Field>
<FieldName>From</FieldName>
<SqlExpression>'suyog_iswalkar@test.com'</SqlExpression>
</Field>
<Field>
<FieldName>To</FieldName>
<SqlExpression>DeviceAddress</SqlExpression>
</Field>
<Field>
<FieldName>Attachments</FieldName>
<SqlExpression>'C:\Program Files\Adobe\Acrobat
5.0\Help\ENU\MiniReader.pdf'</SqlExpression>
</Field>
</Fields>
<!-- Retry Schedule specifies the number of time NS will try sending
notification if it fails and the time duration between each trial -->
<ProtocolExecutionSettings>
<RetrySchedule>
<RetryDelay>PT0H1M</RetryDelay>
<RetryDelay>PT0H1M</RetryDelay>
<RetryDelay>PT0H1M</RetryDelay>
<RetryDelay>PT0H1M</RetryDelay>
</RetrySchedule>
</ProtocolExecutionSettings>
</Protocol>
</Protocols>
<!-- Amount of time that needs to be elapsed before considering the failed
notification message to have expired -->
<ExpirationAge>PT2H</ExpirationAge>
</NotificationClass>
--------------- code of custom delivery protocol class file
--------------------
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Text;
using Microsoft.SqlServer.NotificationServices;
using CDO;
using Microsoft.ApplicationBlocks.ExceptionManagement;
namespace RapsNS
{
public class myDeliveryProtocol : IDeliveryProtocol
{
private bool multicast = false;
private NotificationStatusCallback notificationStatusCallback = null;
public myDeliveryProtocol()
{
//Add constructor logic here if required.
}
//Implement the IDeliveryProtocol.Initialize method.
public void Initialize(
StringDictionary channelArgs,
bool multicast,
NotificationStatusCallback notificationStatusCallback )
{
this.multicast = multicast;
this.notificationStatusCallback = notificationStatusCallback;
}
//Implement the IDeliveryProtocol.DeliverNotification method.
public void DeliverNotification(
NotificationHeaders[] notificationHeaders,
string body )
{
bool successfulDelivery = false;
Exception failureException = null;
try
{
//Get a connection to SQL Server.
// using (SqlConnection myConnection = new
SqlConnection(connectionString))
CDO.Message mail = new CDO.MessageClass();
CDO.Configuration iconfig;
ADODB.Fields oFields;
ADODB.Field oField;
iconfig = mail.Configuration;
oFields = iconfig.Fields;
oField =
oFields["
http://schemas.microsoft.com/cdo/configuration/sendusing"];
oField.Value = 2;
oField =
oFields["
http://schemas.microsoft.com/cdo/configuration/smtpserver"];
//oField.Value = "Punhjw20271";//"smarthost" ;
oField.Value = "192.168.170.20";
oFields.Update();
mail.Configuration = iconfig;
mail.To = "suyog_iswalkar@test.com";
mail.From = "suyog_iswalkar@test.com";
mail.Subject = "Test";
mail.TextBody = "testing testing";
//Execute the command.
mail.Send();
successfulDelivery = true;
}
catch (Exception ex)
{
failureException = ex;
//Handle any exceptions here; for instance,
//write exception information to the event log.
ExceptionManager.Publish(ex);
}
finally
{
SendStatus(notificationHeaders, successfulDelivery, body,
failureException);
}
}
//Builds up a statusInfo message, creates a
//NotificationStatus object, and calls
//the notificationStatusCallback delegate.
private void SendStatus(