⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newsletter.cs

📁 wrox c#高级编程
💻 CS
字号:
using System;
using System.Data;
using System.Data.SqlClient;
// add a reference to System.Web assembly
using System.Web;
using System.Web.Mail;

namespace Wrox.WebModules.MailingLists.Business
{
	public class Newsletter : Wrox.WebModules.Business.BizObject
	{
		private Configuration.ModuleSettings settings;
		private int newsletterID;
		private int listID;
		private string subject;
		private string body;
		private bool isHTML;
		private DateTime sentDate;
				
		// constructors
		public Newsletter()
		{ 
			settings = Configuration.ModuleConfig.GetSettings();
			ResetProperties();
		}

		public Newsletter(int existingNewsletterID)
		{			
			settings = Configuration.ModuleConfig.GetSettings();
			newsletterID = existingNewsletterID;
			LoadFromID();						
		}

		public Newsletter(Newsletter existingNewsletter)
		{									
			settings = Configuration.ModuleConfig.GetSettings();
			newsletterID = existingNewsletter.ID;
			LoadFromID();
		}
		
		// retrieve the values for the properties
		private void LoadFromID()
		{
			Data.Newsletters newsletters = new Data.Newsletters(settings.ConnectionString);
			Data.NewsletterDetails details = newsletters.GetDetails(newsletterID);

			newsletterID = details.NewsletterID;
			listID = details.ListID;
			subject = details.Subject;
			body = details.Body;
			isHTML = details.IsHTML;
			sentDate = details.SentDate;
		}

		public int LoadFromID(int existingNewsletterID)
		{
			newsletterID = existingNewsletterID;
			LoadFromID();
			return newsletterID;
		}

		// reset the properties
		private void ResetProperties()
		{
			newsletterID = -1;
			listID = -1;
			subject = "";
			body = "";
			isHTML = false;
			sentDate = new DateTime();
		}

		// delete the record represented by this object
		public bool Delete()
		{
			Data.Newsletters newsletters = new Data.Newsletters(settings.ConnectionString);
			bool ret = newsletters.Delete(newsletterID);
			ResetProperties();
			return ret;
		}


		// send a newsletter to the specified list, and return the ID of the new record
		public int Send(int newsletterListID, string newsletterSubject, string newsletterBody, 
			bool newsletterIsHTML, MailPriority priority, bool saveToDB, out int totalNewsletters)
		{
			// reset the ID of the newsletter identifies by this object
			newsletterID = -1;

			// replace the list's tags in the subject
			newsletterSubject = Helper.ProcessListTags(newsletterSubject, newsletterListID);
			// replace the list's and settings' tags in the body
			newsletterBody = Helper.ProcessListTags(newsletterBody, newsletterListID); 
			newsletterBody = Helper.ProcessSettingsTags(newsletterBody);
							
			// add a new record in the newsletters archive, if required
			if (saveToDB)
			{
				Data.Newsletters news = new Data.Newsletters(settings.ConnectionString);
				newsletterID = news.Add(newsletterListID, newsletterSubject, newsletterBody, newsletterIsHTML);
			}
			
			// create a new mail message and set the common properties
			MailMessage mailMsg = new MailMessage();
			mailMsg.From = settings.SenderName + " <" + settings.SenderEmail + ">";
			mailMsg.Priority = priority;
			mailMsg.BodyFormat = (MailFormat)Convert.ToInt16(newsletterIsHTML);
			mailMsg.Subject = newsletterSubject;
        	
			// get all the active subscribers of this list
			DataTable dt = new Business.List(newsletterListID).GetSubscriptions(true).Tables[0];
			for(int i = 0; i < dt.DefaultView.Count; i++)
			{
				// replace the subscriber's special tags with their values
				mailMsg.To = (string)dt.DefaultView[i]["Email"];
				mailMsg.Body = Helper.ProcessSubscriptionTags(newsletterBody, 
					        (int)dt.DefaultView[i]["SubscriptionID"]);	
				// send the mail to this subscriber
				SmtpMail.Send(mailMsg);
			}
			
			// load the data for the sent newsletter in the current object
			if (newsletterID != -1)
				LoadFromID();
			else
				ResetProperties();

			// return the number of sent newsletters through an output parameter
			totalNewsletters = dt.DefaultView.Count;

			// return the ID of the newsletter added to the archive, or -1 if it has not been added
			return newsletterID;
		}

		// overloaded version of the above one, without the output parameter
		public int Send(int newsletterListID, string newsletterSubject, string newsletterBody, 
			bool newsletterIsHTML, MailPriority priority, bool saveToDB)
		{
			int totalNewsletters;
			return Send(newsletterListID, newsletterSubject, newsletterBody, 
				newsletterIsHTML, priority, saveToDB, out totalNewsletters);
		}


		// PROPERTIES DEFINED BELOW

		public int ID
		{
			get { return newsletterID; }
		}

		public int ListID
		{
			get { return listID; }
		}

		public Business.List List
		{
			get { return new List(listID); }
		}

		public string Subject
		{
			get { return subject; }
		}

		public string Body
		{
			get { return body; }
		}

		public bool IsHTML
		{
			get { return isHTML; }
		}

		public DateTime SentDate
		{
			get { return sentDate; }
		}
	
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -