//На событии таймара Timer1_Tick происходит отправка новостей подписчикам
Новости
// Поиск по новостям
// Панель с ссылкой на добавление новости, видна только администраторам и редакторам
Добавить новость
//Панель с визуализацией состояния отправки новостей на е-mail
 
 
//подключение к объекту с данными
//отображениеновостейв ListView
Таких новостей не найдено.
'>
' />
Добавлено
//панель редактирования новости видна только администраторам и редакторам ">
' Visible="false">
' CommandName="Send"="~/Images/SendNews.png"="if (confirm('Разослать новость по подписке?') == false) return false;"
ToolTip="Разослать новость по подписке" />
'="Изменить новость" />
' CommandName="Del"="~/Images/Delete.gif"="if (confirm('Вы действительно хотите удалить эту новость?') == false) return false;"="Удалить" />
//компонент DataPager для перелистывания страниц с новостями
2.5 Страница сайта, отображающая информацию с базы данных Newsletters.cs
using System;System.Data;System.Configuration;System.Collections;System.Web;System.Web.Security;System.Web.UI;System.Web.Profile;System.Web.UI.WebControls;System.Web.UI.WebControls.WebParts;System.Web.UI.HtmlControls;System.Data.SqlClient;MB.AppliedMathematics.DAL.Details;MB.AppliedMathematics.DAL.SqlClient;System.IO;System.Net.Mail;System.Net;System.Text;System.Net.Mime;System.Web.Configuration;System.Net.Configuration;System.Collections.Generic;MB.AppliedMathematics.UI
{partial class Newsletters : BasePage
{bool _userCanEdit = false;bool UserCanEdit
{{ return _userCanEdit; }{ _userCanEdit = value; }
}void Page_Init(object sender, EventArgs e)
{= (this.User.Identity.IsAuthenticated &&
(this.User.IsInRole("Administrators") || this.User.IsInRole("Editors")));
}void Page_Load(object sender, EventArgs e)
{
// панели для редактирования новости видны только администраторам и редакторам if (!this.IsPostBack)
{ if (this.User.Identity.IsAuthenticated &&
(this.User.IsInRole("Administrators") || this.User.IsInRole("Editors")))
{ panAdd.Visible = true;.Visible = true; }(TextBoxSearch.Text); }();
}
// показываем в виде картинки состояние новости, разослана она или нет подписчикам protected void ImageSendGreed()
{ for (int i = 0; i < ListView1.Items.Count; i++)
{ Image ImageNewsletter = (Image)ListView1.Items[i].FindControl("ImageNewsletter");LabelNewsletter = (Label)ListView1.Items[i].FindControl("LabelNewsletter");(LabelNewsletter.Text == "False")
{ImageNewsletter.ToolTip = "Новость еще не разослана";.ImageUrl = "~/Images/Envelope.png";}
{ImageNewsletter.ToolTip = "Новость разослана";.ImageUrl = "~/Images/OpenEnvelope.png";}
} }
// формируем DataSet с именами и e-mail подписчиков protected DataSet Addresset()
{Address = new DataSet();.Tables.Add("Table");.Tables["Table"].Columns.Add("User");.Tables["Table"].Columns.Add("eMail");allUsers = Membership.GetAllUsers();(MembershipUser user in allUsers)
{ProfileCommon profile = new ProfileCommon();= Profile.GetProfile(user.UserName);(profile.Preferences.Newsletter == "Да")
{DataRow dr = Address.Tables["Table"].NewRow();["User"] = user.UserName;["eMail"] = user.Email;.Tables["Table"].Rows.Add(dr);
}}
return Address;
}
// процедура отправки письма с новостью protected int SendMail(string user, string email, string subject, string bodyText)
{try
{Configuration config = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);settings = (MailSettingsSectionGroup)config.GetSectionGroup("system.net/mailSettings");Smtp = new SmtpClient(settings.Smtp.Network.Host, settings.Smtp.Network.Port);.Credentials = new NetworkCredential(settings.Smtp.From, settings.Smtp.Network.Password);
// оправляем сообщение MailMessage msg = new MailMessage();.IsBodyHtml = false;.From = new MailAddress(settings.Smtp.From);.To.Add(new MailAddress(email, ""));.IsBodyHtml = true;.Subject = string.Format(Globals.Settings.ContactForm.MailSubject, subject);body = "Здравствуйте " + user + "!"+"\n";= body + bodyText;.Body = body;.Send(msg);1;
}(Exception ex)
{ return 0; }
}
// отправка писем происходит в событии таймера protected void Timer1_Tick(object sender, EventArgs e)
{DataSet Addres = (DataSet)Application["Address"];index = (int)Application["index"];zap = (NewsletterDetails)Application["Newsletter"];(index < Addres.Tables[0].Rows.Count)
{DataRow dr = Addres.Tables[0].Rows[index];.Text = (index + 1).ToString();["LetterSend"] = (int)Application["LetterSend"] + SendMail(dr["User"].ToString(), dr["eMail"].ToString(), "Новости", "\n"+"Тема новости: "+zap.Subject+"\n"+zap.HtmlBody);["index"] = (int)Application["index"] + 1;
}
{SQLNewsletterProvider MyDb = new SQLNewsletterProvider();.UpdateNewsletterSend(zap.ID);.Enabled = false;LetterSend = (int)Application["LetterSend"];LetterNoSend = Addres.Tables[0].Rows.Count - LetterSend;.Visible = true;.Visible = true;.Text = LetterSend.ToString();.Text = LetterNoSend.ToString();.Visible = false;.Visible = true;(TextBoxSearch.Text);();
}}void clear()
{LabelLetterSendL.Visible = false;.Visible = false;.Text = "";.Text = "";.Text = "0"; }void ButtonOK_Click(object sender, EventArgs e)
{PanelSendEmail.Visible = false;}
//кнопкапоиска protected void ImageButtonSearch_Click(object sender, ImageClickEventArgs e)
{Data(TextBoxSearch.Text);}
//заполнение данными ListView с новостями protected void Data(string param)
{SQLNewsletterProvider myDB = new SQLNewsletterProvider(); zaps = new List();= myDB.GetNewsletters(param);.SelectParameters["param"] = new Parameter("param", TypeCode.String, TextBoxSearch.Text);.DataBind();.Text = zaps.Count.ToString();.Text = "";
}