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

📄 addnewsletter.aspx.cs

📁 一个ASP.NET下的中文内容管理和社区系统
💻 CS
字号:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Web.Mail;



namespace ASPNET.StarterKit.Communities.Admin.SendNewsletter
{
	/// <summary>
	/// Summary description for AddNewsletter.
	/// </summary>
	public class AddNewsletter : System.Web.UI.Page
	{
		protected System.Web.UI.WebControls.DropDownList dropNewsletterTemplates;
		protected System.Web.UI.WebControls.Button btnDeleteTemplate;
		protected System.Web.UI.WebControls.Button btnSaveAsNewTemplate;
		protected System.Web.UI.WebControls.Button btnSaveTemplate;
		protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1;
		protected System.Web.UI.WebControls.TextBox txtTemplateName;
		protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator2;
		protected System.Web.UI.WebControls.TextBox txtNewsletterSubject;
		protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator3;
		protected System.Web.UI.WebControls.TextBox txtNewsletterBody;
		protected System.Web.UI.WebControls.RadioButtonList rdlNewsletterBodyFormat;
		protected System.Web.UI.WebControls.Button btnPreviewNewsletter;
		protected System.Web.UI.WebControls.Button btnSaveAndSendNewsletter;
		protected System.Web.UI.WebControls.Button btnSendTest;
		protected System.Web.UI.WebControls.TextBox txtTestEmail;
		protected System.Web.UI.WebControls.Panel pnlForm;
		protected System.Web.UI.WebControls.Label lblSubject;
		protected System.Web.UI.WebControls.Label lblBody;
		protected System.Web.UI.WebControls.Button Button1;
		protected System.Web.UI.WebControls.Panel pnlPreview;
	

		#region Web Form Designer generated code
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{    
			this.dropNewsletterTemplates.SelectedIndexChanged += new System.EventHandler(this.Template_Changed);
			this.btnDeleteTemplate.Click += new System.EventHandler(this.DeleteTemplate);
			this.btnSaveAsNewTemplate.Click += new System.EventHandler(this.SaveAsNewTemplate);
			this.btnSaveTemplate.Click += new System.EventHandler(this.SaveTemplate);
			this.btnPreviewNewsletter.Click += new System.EventHandler(this.Preview);
			this.btnSaveAndSendNewsletter.Click += new System.EventHandler(this.SendNewsletter);
			this.btnSendTest.Click += new System.EventHandler(this.SendTest);
			this.Button1.Click += new System.EventHandler(this.Continue);
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion



		//*******************************************************
		//
		// When the page loads, grab the list of newsletter
		// template names from the database and bind them to
		// a dropdown list..
		//
		//*******************************************************
	    
		void Page_Load(object sender, System.EventArgs e) {
			if (!Page.IsPostBack) {
				BindTemplates();
				if (dropNewsletterTemplates.Items.Count > 0)
					GetTemplate(Int32.Parse(dropNewsletterTemplates.SelectedItem.Value));
			}
		}
	    
		//*******************************************************
		//
		// Take an existing template and save it as a
		// new template.
		//
		//*******************************************************
	    
		void SaveAsNewTemplate(Object s, EventArgs e) {
			int templateID = AdminUtility.AddNewsletterTemplate
			(
				txtTemplateName.Text,
				txtNewsletterSubject.Text,
				txtNewsletterBody.Text,
				Int32.Parse(rdlNewsletterBodyFormat.SelectedItem.Value)
			);
	    
			BindTemplates();
			SelectTemplate(templateID);
		}
	    
	    
		//*******************************************************
		//
		// Save a newsletter template to the database.
		//
		//*******************************************************
	    
		void SaveTemplate(Object s, EventArgs e) {
			// if no templates, save as new template
			if (dropNewsletterTemplates.Items.Count == 0) {
				SaveAsNewTemplate(s, e);
				return;
			}
	    
			int templateID = Int32.Parse(dropNewsletterTemplates.SelectedItem.Value);
	    
			AdminUtility.EditNewsletterTemplate
			(
				templateID,
				txtTemplateName.Text,
				txtNewsletterSubject.Text,
				txtNewsletterBody.Text,
				Int32.Parse(rdlNewsletterBodyFormat.SelectedItem.Value)
			);
			BindTemplates();
			SelectTemplate(templateID);
		}
	    
	    
		//*******************************************************
		//
		// Delete an existing newsletter template.
		//
		//*******************************************************
	    
		void DeleteTemplate(Object s, EventArgs e) {
			// don't delete if there are not templates
			if (dropNewsletterTemplates.Items.Count == 0)
				return;
	    
			int templateID = Int32.Parse(dropNewsletterTemplates.SelectedItem.Value);
	    
			AdminUtility.DeleteTemplate(templateID);
			BindTemplates();
			if (dropNewsletterTemplates.Items.Count > 0)
				GetTemplate(Int32.Parse(dropNewsletterTemplates.SelectedItem.Value));
		}
	    
	    
		//*******************************************************
		//
		// User has selected a new newsletter template
		// from the dropdown list.
		//
		//*******************************************************
	    
		void Template_Changed(Object s, EventArgs e) {
			int templateID = Int32.Parse(dropNewsletterTemplates.SelectedItem.Value);
			GetTemplate(templateID);
			SelectTemplate(templateID);
		}
	    
	    
		//*******************************************************
		//
		// Get newsletter template information from the database
		//
		//*******************************************************
	    
		void GetTemplate(int templateID) {
			SqlDataReader dr = AdminUtility.GetNewsletterTemplate(templateID);
			if (dr.Read()) {
				txtTemplateName.Text = (string)dr["Template_Name"];
				txtNewsletterSubject.Text = (string)dr["Template_Subject"];
				txtNewsletterBody.Text = (string)dr["Template_Body"];
	    
				int bodyFormat = (int)dr["Template_BodyFormat"];
				rdlNewsletterBodyFormat.SelectedIndex = -1;
				rdlNewsletterBodyFormat.Items.FindByValue(bodyFormat.ToString()).Selected = true;
			}
			dr.Close();
		}
	    
	    
		//*******************************************************
		//
		// Bind the templates to the dropdown list.
		//
		//*******************************************************
	    
		void BindTemplates() {
			dropNewsletterTemplates.DataSource = AdminUtility.GetNewsletterTemplateNames();
			dropNewsletterTemplates.DataTextField = "Template_Name";
			dropNewsletterTemplates.DataValueField = "Template_ID";
			dropNewsletterTemplates.DataBind();
		}
	    
	    
		//*******************************************************
		//
		// Display the selected template in the form.
		//
		//*******************************************************
	    
		void SelectTemplate(int templateID) {
			dropNewsletterTemplates.SelectedIndex = -1;
			dropNewsletterTemplates.Items.FindByValue(templateID.ToString()).Selected = true;
		}
	    
	    
		//*******************************************************
		//
		// Send a test newsletter to the specified email address.
		//
		//*******************************************************
	    
		void SendTest(Object s, EventArgs e) {
			// Don't send if no email
			if (txtTestEmail.Text.Trim() == String.Empty)
				return;
	    
			// Get user profile
			ProfileInfo profileInfo = UserUtility.GetProfile(User.Identity.Name);
	    
			// Get body format info
			MailFormat bodyFormat = (MailFormat)Int32.Parse(rdlNewsletterBodyFormat.SelectedItem.Value);
	    
			// Get SMTP Server
			string smtpServer = CommunityGlobals.SmtpServer;
	    
			// Create FROM address
			string from = String.Format("news@{0}", smtpServer);
	    
			// Send formated text
			string subject = EmailUtility.FormatEmailText(txtNewsletterSubject.Text, bodyFormat, profileInfo);
			string body = EmailUtility.FormatEmailText(txtNewsletterBody.Text, bodyFormat, profileInfo);
			EmailUtility.SendEmail(from, txtTestEmail.Text, subject, body, bodyFormat, CommunityGlobals.SmtpServer);
		}
	    
	    
		//*******************************************************
		//
		// Display preview of the newsletter.
		//
		//*******************************************************
	    
		void Preview(Object s, EventArgs e) {
			// Get user profile
			ProfileInfo profileInfo = UserUtility.GetProfile(User.Identity.Name);
	    
			// Get body format info
			MailFormat bodyFormat = (MailFormat)Int32.Parse(rdlNewsletterBodyFormat.SelectedItem.Value);
	    
			// Display formated text
			lblSubject.Text = EmailUtility.FormatEmailText(txtNewsletterSubject.Text, bodyFormat, profileInfo);
			lblBody.Text = EmailUtility.FormatEmailText(txtNewsletterBody.Text, bodyFormat, profileInfo);
	    
			// Format Plain Text
			if (bodyFormat == MailFormat.Text) {
				lblSubject.Text = String.Format("\n<pre>{0}</pre>\n", Server.HtmlEncode(lblSubject.Text));
				lblBody.Text = String.Format("\n<pre>{0}</pre>\n", Server.HtmlEncode(lblBody.Text));
			}
	    
			pnlForm.Visible = false;
			pnlPreview.Visible = true;
		}
	    
	    
		//*******************************************************
		//
		// Finish previewing a newsletter and return to
		// editing.
		//
		//*******************************************************
	    
		void Continue(Object s, EventArgs e) {
			pnlForm.Visible = true;
			pnlPreview.Visible = false;
		}
	    
		//*******************************************************
		//
		// Begin sending the newsletter and redirect to
		// Sending.aspx page to display send progress.
		//
		//*******************************************************
	    
		void SendNewsletter(Object s, EventArgs e) {
			if (Page.IsValid) {
	    
				// Get body format info
				MailFormat bodyFormat = (MailFormat)Int32.Parse(rdlNewsletterBodyFormat.SelectedItem.Value);
	    
				int newsletterID = AdminUtility.AddNewsletter
				(
					txtNewsletterSubject.Text,
					txtNewsletterBody.Text,
					Int32.Parse(rdlNewsletterBodyFormat.SelectedItem.Value)
				);
	    
	    
				// Redirect to status page before sending emails.
				// ScriptTimeout is set so that all the emails must be sent within an hour.
				// You can set this to a higher value when you have a huge number of emails to send.
				Server.ScriptTimeout = 60 * 60;
				Response.Redirect(String.Format("Sending.aspx?id={0}", newsletterID), false);
				Response.Flush();
				Response.Close();
	    
				// Send the Emails
				EmailUtility.SendNewsletter
				(
					newsletterID,
					txtNewsletterSubject.Text,
					txtNewsletterBody.Text,
					bodyFormat
				);
			}
		}

		private void Page_Load()
		{
		
		}





	}
}

⌨️ 快捷键说明

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