<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://forums.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Classifieds Starter Kit</title><link>http://forums.asp.net/1021.aspx</link><description>Discussions about and feedback on the Classifieds Starter Kit for ASP.NET 2.0.</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Re: Ad Expiry Notification System</title><link>http://forums.asp.net/thread/3248818.aspx</link><pubDate>Sun, 21 Jun 2009 13:11:33 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:3248818</guid><dc:creator>mudassarkhan</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/3248818.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=1021&amp;PostID=3248818</wfw:commentRss><description>&lt;p&gt;You can take help of SQL Server to do this&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.aspsnippets.com/post/2009/03/08/Automated-Email-Notifications-using-SQL-Server-Job-Schedular.aspx"&gt;http://www.aspsnippets.com/post/2009/03/08/Automated-Email-Notifications-using-SQL-Server-Job-Schedular.aspx&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Re: Ad Expiry Notification System</title><link>http://forums.asp.net/thread/3248603.aspx</link><pubDate>Sun, 21 Jun 2009 08:44:21 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:3248603</guid><dc:creator>Mr Capricorn</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/3248603.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=1021&amp;PostID=3248603</wfw:commentRss><description>&lt;p&gt;Hi ! thats a great idea , frankly speaking I realy need such an idea for my project I am working On.........&lt;/p&gt;</description></item><item><title>Re: Ad Expiry Notification System</title><link>http://forums.asp.net/thread/2733864.aspx</link><pubDate>Sun, 09 Nov 2008 15:25:36 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2733864</guid><dc:creator>darkknight187</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2733864.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=1021&amp;PostID=2733864</wfw:commentRss><description>&lt;p&gt;I&amp;#39;ve made a lot of upgrades since I posted that fix above.&lt;br /&gt;&lt;br /&gt;1. I moved all the email processes into a specific class.&lt;br /&gt;2. I am using a xml file to log when the last email was sent.&lt;br /&gt;3. I set it up to process email only on click of a button, this I click every morning.&lt;br /&gt;4. I dramatically changed the email sent to include alternate views, html and plain text.&lt;br /&gt;5. And I included another funtion that runs every 20 days, 30 days, 45 days, or not at all.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; This function sends the user a listing summary of every thing they have listed.&lt;/p&gt;
&lt;p&gt;With out seeing your actual code I can&amp;#39;t say exactly what your issue is.&lt;br /&gt;If it&amp;#39;s sending every five minutes, something is triggering it.&lt;br /&gt;&lt;br /&gt;Below is a sample of connecting to a xml file on a button click,&lt;br /&gt;so even if you click twice, it will only process once.&lt;/p&gt;
&lt;p&gt;If you would like me to fix it for you I will do it with all the above mentioned additions for $40.&lt;br /&gt;And if you send me a private message with your email address, &lt;br /&gt;I&amp;#39;ll send you a sample of what my emails look like.&lt;/p&gt;
&lt;p&gt;But try this.&lt;br /&gt;&lt;/p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Protected&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; ListingsNotificationButton_Click(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; sender &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Object&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; e &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; EventArgs)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;#39;Path of your xml file&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; path &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; = Server.MapPath(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;~/MyFolderForXml/NotificationTime.xml&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; doc &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; System.Xml.XmlDocument = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; XmlDocument()&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;doc.Load(path) &lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;#39;Load XML file &lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;#39;Assumes exact XML format you provided above &lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; node &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; System.Xml.XmlNode = doc.SelectSingleNode(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Settings/ListingsNotificationDateTime&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;#39;Get date node from XML file &lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Not&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; (node &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Is&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Nothing&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Then&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;lblNotification.Text = node.InnerText&lt;/p&gt;node.InnerText = DateTime.Now.ToString(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;MM/dd/yy&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;#39;Set value of date node &lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;doc.Save(path)&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;#39;Save to the original file path &lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; lastNotification &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; DateTime = lblNotification.Text&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; sendNotification &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Boolean&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;False&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; oneDayAgo &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; DateTime = DateTime.Today.Subtract(TimeSpan.FromDays(1))&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; oneDayAgo &amp;gt;= lastNotification &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Then&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;sendNotification = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;True&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; sendNotification &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Then&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;CheckAdsToExpire()&lt;/p&gt;
&lt;p&gt;CurrentListingsSummary()&lt;/p&gt;
&lt;p&gt;HeaderLabel.Text = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Email Listing Summaries Have Now Been Sent&amp;quot;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Else&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;HeaderLabel.Text = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Email Listing Summaries Have Already Been Sent Today.&amp;quot;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;Good Luck&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;Daniel&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/font&gt;</description></item><item><title>Re: Ad Expiry Notification System</title><link>http://forums.asp.net/thread/2733501.aspx</link><pubDate>Sun, 09 Nov 2008 00:16:30 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2733501</guid><dc:creator>kfalus</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2733501.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=1021&amp;PostID=2733501</wfw:commentRss><description>&lt;p&gt;hi darknight187&lt;/p&gt;
&lt;p&gt;I tried your code and yes it works.&lt;/p&gt;
&lt;p&gt;But there is a little problem about it.&lt;/p&gt;
&lt;p&gt;It sends notification email periodically. I mean I am receiving email for expiring ad every 5 minutes. So there are a lot of same mails in mailbox. &lt;/p&gt;
&lt;p&gt;What should be done in order to send just&amp;nbsp;1 mail and skip that user ?&lt;/p&gt;</description></item><item><title>Re: Ad Expiry Notification System</title><link>http://forums.asp.net/thread/2224103.aspx</link><pubDate>Mon, 10 Mar 2008 23:31:15 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2224103</guid><dc:creator>darkknight187</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2224103.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=1021&amp;PostID=2224103</wfw:commentRss><description>&lt;p&gt;I just noticed that I also added another storedprocedure&lt;/p&gt;&lt;font size="2"&gt;
&lt;p&gt;ads = db.GetToExpireAds(expiration, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;CInt&lt;/font&gt;&lt;font size="2"&gt;(AdStatus.Activated))&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;ALTER PROCEDURE &lt;/font&gt;&lt;font size="2"&gt;GetToExpireAds&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;@ExpirationDate &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;smalldatetime &lt;/font&gt;&lt;font size="2"&gt;= &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;getdate&lt;/font&gt;&lt;font size="2"&gt;,&lt;/p&gt;
&lt;p&gt;@AdStatus &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int &lt;/font&gt;&lt;font size="2"&gt;= 0&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;AS&lt;/p&gt;
&lt;p&gt;SELECT &lt;/font&gt;&lt;font size="2"&gt;* &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;FROM &lt;/font&gt;&lt;font size="2"&gt;ClassifiedsView_Ads&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;WHERE&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;ExpirationDate = @ExpirationDate &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;AND&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;(@AdStatus = 0 &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;OR &lt;/font&gt;&lt;font size="2"&gt;AdStatus = @AdStatus)&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;</description></item><item><title>Re: Ad Expiry Notification System</title><link>http://forums.asp.net/thread/2221534.aspx</link><pubDate>Sun, 09 Mar 2008 18:43:13 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2221534</guid><dc:creator>darkknight187</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2221534.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=1021&amp;PostID=2221534</wfw:commentRss><description>&lt;p&gt;Mine works fine, but I did make a few modifications,&lt;/p&gt;
&lt;p&gt;For one declaring lastNotification does not really work that well on newer sites, since if there is no activity for several hours your host servers cache of your site will expire.&lt;/p&gt;
&lt;p&gt;I use an xml file to determine the last notification.&lt;/p&gt;
&lt;p&gt;I am currently working on an update for this code, as is above, it will send one email per ads about to expire.&lt;/p&gt;
&lt;p&gt;If a user has 5 about to expire they then get 5 emails. &lt;/p&gt;
&lt;p&gt;I am trying to figure out how to update it to send one email with the five ads in it.&lt;/p&gt;
&lt;p&gt;But the code above does work.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: Ad Expiry Notification System</title><link>http://forums.asp.net/thread/2221149.aspx</link><pubDate>Sun, 09 Mar 2008 06:40:14 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2221149</guid><dc:creator>Annddrew</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2221149.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=1021&amp;PostID=2221149</wfw:commentRss><description>&lt;p&gt;Hi darknight,&lt;/p&gt;
&lt;p&gt;Why my code didn&amp;#39;t work? I tested it and it worked. What about your code did it work? What about (&lt;font color="#800000" size="2"&gt;&amp;quot;EditAd.aspx?id={0}&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, id)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; in the link which is sent to the user with the message? Did you implement this page EditAd.aspx ? Thanks&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Re: Ad Expiry Notification System</title><link>http://forums.asp.net/thread/1853939.aspx</link><pubDate>Sun, 12 Aug 2007 20:04:31 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1853939</guid><dc:creator>darkknight187</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1853939.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=1021&amp;PostID=1853939</wfw:commentRss><description>&lt;p&gt;So I have finally been able to get this to work right.&lt;/p&gt;
&lt;p&gt;I used the above mentioned tool to convert the C# to VB, and andrews code didn&amp;#39;t quite work.&lt;/p&gt;
&lt;p&gt;So this is what worked for me in VB of course, first off I ended up not using andrews step 1, step 2, or step 3. The process is already built into the code.&lt;/p&gt;
&lt;p&gt;The only file that needs to be modified is the maintenance file. And as I am posting the only thing that I have not tested is to get it to run daily.&lt;/p&gt;
&lt;p&gt;By default it will run every hour, which makes it easier for testing.&lt;/p&gt;
&lt;p&gt;So I modified the hourly maintenance timer to this,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;Public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Shared&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font size="2"&gt; HourlyMaintenanceTimer(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; state &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Object&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;CheckAdExpirations()&lt;/p&gt;
&lt;p&gt;ProcessSummaryNotification()&lt;/p&gt;
&lt;p&gt;CheckAdsToExpire()&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;And then I added this to the maintenance file&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;Private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Shared&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font size="2"&gt; NotifyMemberByMail(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; title &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; recipientEmail &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; address &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; location &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; categoryname &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; id &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; membername &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; s &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; SiteSettings = SiteSettings.GetSharedSettings()&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; messageBody &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; StringBuilder()&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;messageBody.AppendLine()&lt;/p&gt;messageBody.Append(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;RE: Detelli Property Network Listing &amp;quot;&lt;/font&gt;&lt;font size="2"&gt; + ClassifiedsHttpApplication.SiteUrl)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;messageBody.AppendFormat(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;ShowAd.aspx?id={0}&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, id)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;messageBody.AppendLine()&lt;/p&gt;
&lt;p&gt;messageBody.AppendLine()&lt;/p&gt;messageBody.AppendLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;Dear &amp;quot;&lt;/font&gt;&lt;font size="2"&gt; + membername + &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;,&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;messageBody.AppendLine()&lt;/p&gt;messageBody.AppendLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;Thank you for listing your property with Detelli Property Network.&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;messageBody.AppendLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;This message has been sent to inform you that your listing is about to expire.&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;messageBody.AppendLine()&lt;/p&gt;messageBody.AppendLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;Your Listing will expire on &amp;quot;&lt;/font&gt;&lt;font size="2"&gt; + DateTime.Today.AddDays(1))&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;messageBody.AppendLine()&lt;/p&gt;
&lt;p&gt;messageBody.AppendLine(title)&lt;/p&gt;
&lt;p&gt;messageBody.AppendLine(address)&lt;/p&gt;messageBody.AppendLine(location + &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;, &amp;quot;&lt;/font&gt;&lt;font size="2"&gt; + categoryname)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;messageBody.AppendLine()&lt;/p&gt;messageBody.AppendLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;To extend your listing, Please click the link below.&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;messageBody.AppendLine()&lt;/p&gt;
&lt;p&gt;messageBody.Append(ClassifiedsHttpApplication.SiteUrl)&lt;/p&gt;messageBody.AppendFormat(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;EditAd.aspx?id={0}&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, id)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;messageBody.AppendLine()&lt;/p&gt;
&lt;p&gt;messageBody.AppendLine()&lt;/p&gt;messageBody.AppendLine(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;Or log on to www.detelli.com and go to the &amp;#39;my detelli&amp;#39; page and choose edit listing.&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;messageBody.AppendLine()&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Try&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; m &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; MailMessage(s.SiteEmailFromField, recipientEmail)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;m.Subject = &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;Your property listing will expire Soon&amp;quot;&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;m.Body = messageBody.ToString()&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; client &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; SmtpClient()&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;#39; uncomment this code for ssl enabled smtp servers&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;#39; client.EnableSsl = true;&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;client.Send(m)&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Catch&lt;/font&gt;&lt;font size="2"&gt; ex &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; Exception&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Try&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;&lt;/font&gt;And lastly this&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;Private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Shared&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font size="2"&gt; CheckAdsToExpire()&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; ads &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; AdsDataComponent.AdsDataTable = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Nothing&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Using&lt;/font&gt;&lt;font size="2"&gt; db &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; AdsDataAdapter()&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; expiration &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; DateTime = DateTime.Now.AddDays(1)&lt;/p&gt;ads = db.GetExpiredAds(expiration, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;CInt&lt;/font&gt;&lt;font size="2"&gt;(AdStatus.Activated))&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; ad &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; AdsDataComponent.AdsRow&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;For&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Each&lt;/font&gt;&lt;font size="2"&gt; ad &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;In&lt;/font&gt;&lt;font size="2"&gt; ads.Rows&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; member &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; MembershipUser = Membership.GetUser(ad.MemberName)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;NotifyMemberByMail(ad.Title, member.Email, ad.Address, ad.Location, ad.CategoryName, ad.Id, ad.MemberName)&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Next&lt;/font&gt;&lt;font size="2"&gt; ad&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Using&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Class&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I&amp;#39;ll find out at midnight tonight if the if statement in the hourlymaintenancetimer will work or not.&lt;/p&gt;
&lt;p&gt;If DateTime.Now.Hour = 0 Then&lt;br /&gt;CheckAdsToExpire()&lt;br /&gt;End If&lt;/p&gt;
&lt;p&gt;If that works properly it will only run CheckAdsToExpire once a day, and if not I will post a fix for&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;Also note my modifications to NotifyMembersByEmail I have added to my database suchas Address, so if you do not have, or want address in the email you will have to delete it there and in the last entry.&lt;/p&gt;
&lt;p&gt;I just thought a lot of other users could benefit from my work.&lt;/p&gt;
&lt;p&gt;Good Luck to all.&lt;/p&gt;
&lt;p&gt;Daniel Meis&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: Ad Expiry Notification System</title><link>http://forums.asp.net/thread/1829236.aspx</link><pubDate>Sun, 29 Jul 2007 17:44:26 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1829236</guid><dc:creator>darkknight187</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1829236.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=1021&amp;PostID=1829236</wfw:commentRss><description>&lt;p&gt;So I just finished converting the code to VB, and for anyone else out there,&lt;/p&gt;
&lt;p&gt;I have come across a great website that will convert C# to VB.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://www.developerfusion.co.uk/utilities/convertcsharptovb.aspx"&gt;http://www.developerfusion.co.uk/utilities/convertcsharptovb.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So easy with the tool. &lt;/p&gt;
&lt;p&gt;I still have to test the expire notification, but I&amp;#39;ll post back with the results.&lt;/p&gt;</description></item><item><title>Re: Ad Expiry Notification System</title><link>http://forums.asp.net/thread/1828553.aspx</link><pubDate>Sat, 28 Jul 2007 13:27:34 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1828553</guid><dc:creator>darkknight187</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1828553.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=1021&amp;PostID=1828553</wfw:commentRss><description>&lt;p&gt;So did anyone figure out how to do this in VB.&lt;/p&gt;
&lt;p&gt;I am going to&amp;nbsp;need this feature, and it would be greatly appreciated if anyone already got it.&lt;/p&gt;
&lt;p&gt;Thank you&lt;/p&gt;
&lt;p&gt;Daniel&lt;/p&gt;</description></item><item><title>Re: Ad Expiry Notification System</title><link>http://forums.asp.net/thread/1447957.aspx</link><pubDate>Tue, 31 Oct 2006 14:05:50 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1447957</guid><dc:creator>Annddrew</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1447957.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=1021&amp;PostID=1447957</wfw:commentRss><description>&lt;p&gt;Thank you for your suggestions. But &lt;font color="#008080" size="2"&gt;Maintenance&lt;/font&gt;&lt;font size="2"&gt;.HourlyMaintenanceTimer is&amp;nbsp; a callback that runs every hour by the timer so there is no need to create another callback that runs every 24 hours. We can just reuse the first one with the addition of the condition:&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;&amp;nbsp;if (DateTime.Now.Hour == 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CheckAdsToExpire();&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;&amp;nbsp;Also there is no logging system in the application so far to audit the exceptions, it would be useful to implement one. Hope this helps&lt;/font&gt;&lt;font size="2"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Re: Ad Expiry Notification System</title><link>http://forums.asp.net/thread/1447360.aspx</link><pubDate>Tue, 31 Oct 2006 02:03:44 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1447360</guid><dc:creator>Wildcat</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1447360.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=1021&amp;PostID=1447360</wfw:commentRss><description>&lt;p&gt;&lt;strong&gt;Thanks for your post.&lt;/strong&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;I only recommend putting some guards on your objects as to avoid null reference errors. Also, why are you suppressing exceptions in your NotifyMemberByMail method?&amp;nbsp; Shouldn&amp;#39;t it get logged or emailed to the Admin?&amp;nbsp; How can you audit failures?&lt;/p&gt;&lt;p&gt;I&amp;#39;d also write a new delegate for the timer to run (callback) everry 24 hours or so, or better yet, make it configurable as a setting that the admin can set or turn off!&amp;nbsp; This way, you don&amp;#39;t have to change any code to turn configure it (turn it off or on and specify the hours).&amp;nbsp; Just a couple suggestions.&lt;/p&gt;&lt;p&gt;Thanks.&lt;br /&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: Ad Expiry Notification System</title><link>http://forums.asp.net/thread/1445838.aspx</link><pubDate>Sun, 29 Oct 2006 22:26:45 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1445838</guid><dc:creator>Annddrew</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1445838.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=1021&amp;PostID=1445838</wfw:commentRss><description>&lt;p&gt;I have managed to implement the expiry notification system. Here are the steps I took:&lt;/p&gt;&lt;p&gt;step 1: I created a stored procedure named GetToExpireAds whose code is&lt;/p&gt;&lt;p&gt;CREATE PROCEDURE GetToExpireAds&lt;br /&gt;@ExpirationDate smalldatetime&lt;br /&gt;AS&lt;br /&gt;SELECT * from ClassifiedsView_Ads&lt;br /&gt;where ExpirationDate = @ExpirationDate&lt;br /&gt;GO&lt;/p&gt;&lt;p&gt;Step 2: I added this strored procedure to the Ads.xsd file through VS.&lt;/p&gt;&lt;p&gt;Step 3: I added the method GetToExpireAds() to the AdsDB class in the Ads.cs file. Its implementation is&lt;br /&gt;public static AdsDataComponent.AdsDataTable GetToExpireAds(DateTime expiration)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (AdsDataAdapter db = new AdsDataAdapter())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return db.GetToExpireAds(expiration);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;Step 4: I added the method CheckAdsToExpire() to the class Maintenance in the Maintenance.cs file. Its implementation is:&lt;br /&gt;private static void CheckAdsToExpire()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AdsDataComponent.AdsDataTable adsToExpire = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; DateTime expiration = DateTime.Today.AddDays(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;adsToExpire = AdsDB.GetToExpireAds(expiration);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (AdsDataComponent.AdsRow ad in adsToExpire.Rows)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;MembershipUser member = Membership.GetUser(ad.MemberName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NotifyMemberByMail(ad.Title, member.Email);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;Step 5: I added the method NotifyMemberByMail() to the class Maintenance in the Maintenance.cs file. Its implementation is:&lt;br /&gt;private static void NotifyMemberByMail(string title, string recipientEmail)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;SiteSettings s = SiteSettings.GetSharedSettings();&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MailMessage m = new MailMessage(s.SiteEmailFromField, recipientEmail);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m.Subject = &amp;quot;Your ad will expire next day&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m.Body = &amp;quot;Your ad with title &amp;#39;&amp;quot; + title +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;&amp;#39; will expire next day on &amp;quot; + DateTime.Today.AddDays(1); ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SmtpClient client = new SmtpClient();&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // uncomment this code for ssl enabled smtp servers&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // client.EnableSsl = true;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; client.Send(m);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;catch(Exception ex) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;Step 6: I modified the implementation of the method HourlyMaintenanceTimer() of the Maintenance class in the Maintenance.cs file. Its new&lt;br /&gt;implementation is :&lt;br /&gt;public static void HourlyMaintenanceTimer(object state)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CheckAdExpirations();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ProcessSummaryNotification();&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // execute this code only once a day &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (DateTime.Now.Hour == 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CheckAdsToExpire();&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;The content of the notification message probabaly needs to include more details. Hope this helps&lt;/p&gt;</description></item><item><title>Re: Ad Expiry Notification System</title><link>http://forums.asp.net/thread/1445061.aspx</link><pubDate>Sat, 28 Oct 2006 15:25:57 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1445061</guid><dc:creator>Annddrew</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1445061.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=1021&amp;PostID=1445061</wfw:commentRss><description>Me too I&amp;#39;m very interested in this. Keep us updated on any progress please.. Thank you</description></item><item><title>Re: Ad Expiry Notification System</title><link>http://forums.asp.net/thread/1444854.aspx</link><pubDate>Sat, 28 Oct 2006 08:10:14 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1444854</guid><dc:creator>nm80129</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1444854.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=1021&amp;PostID=1444854</wfw:commentRss><description>Sounds like a great idea.&amp;nbsp; Would you please share you implementation when you&amp;#39;re done and ready?&amp;nbsp; Thank you.&lt;br /&gt;</description></item></channel></rss>