Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 390

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 384 385 386 387 388 389 < 390 > 391 392 393 394 395 396 .. 404 >> Следующая


Перейдем к коду для кнопки Send Email:

protected void Send^Click (object sender, EventArgs e)

( .

Server.ScriptTimeout ж 3600;

Strins MsgBody ~ Body.Textj

Int ListiD = int.Parse(ListDropDown.Selectedltem.Value)j -

String MsgSubject “ KewaMailer.Otiltiea.ProceesListTags(

Subject.Text, GetConnString (), ListiD);

NewsMailer.AppSettings =

NewsMailer.AppConfig.GetSottings(Server.MapPath(GetSettingsFile<)));

NewsMailer.NewsHistoryDB news - new NewsMailer. NewsHistoryDB(

GetConnStriro О);

11 заменить теги по спискам и установкам на их новые значения MsgBody = NewsMailer.Utilities,ProcesBListTags(MfigBody,

GetCoimString О » LiatID) ; MsgBody = NewsMailer.Utilities.ProcessSettingsTeg3(MsgBody,

GetConnString()>)

II добавить новуи запись в atfхив новостей

news.AddfListID, MsgSubject,MsgBody, <ForraatDropDown,Seleccedlndex=-1));

tt создать новое почтовое сообщение MaiMcssage MailMsg * new MaiMf>?sage();

MailMsg.From = settings.SenderName + * <• + settings.SenderBnail + *>';

MaiIMag,Cc - CC.Text;

MailMsg.Bcc = BCC.Textj
Практике кий пример 2 — Менеджер рассътки новостей в режиме онлайн___________________________829

MailMsg.Priority = (MailPriority)FriorityDropDown.Selectedlndex;

MaiiMeg, BodyFomat = (MailFonnat)ForniatDropDown. Selectedlndex;

MailMsg.Subject = MsgSubject;

NewsMailer.SubscribersDB subscribers ¦ new NewsMailer.SubscribersDB(

. GetConnString());

tt получить всех подписчиков данного листа

DataTable dt = subscribers.GetSubscribers(ListDB).TablestOJ;

foreach (DataRow dr in dt.Rows)

<

11 заменить теги подписчика на их новые значения MailMBg.To ¦= <srting)dr['Email“J;

MailMsg.Body = NewsMailer.Utilities.ProcessSubacriberTags(MsgBody,

GetConnString{), (int)dr['ID'J);

It послать это сообщение данному подписчику SmtpMail,Send(MailMsg );

}

tt показать количество отосланных сообщений MsaPreview.Text _ string.Format(

*<centerxb>(01 mails have been sent</bx/center>“, dt.Rows.Count.ToStringd ) ;

HsgPreview.Visible * true;

).

Эта программа более длинная, но работает она аналогично Preview_ciick. Она выполняет следующие шаги:

? Специальные теги, находящиеся в списке, и общие установки заменяются на соответствующие нм значения, а при необходимости производится кодирование текста

? Сообщение добавляется в архив с помощью метода Add о Класса NewsHistory

? Создается объект MaiiMessage и присваиваются значения его свойствам, общим для всех подписчиков

? Для получения всех подписчиков текущего списка используется экземпляр класса SubscribersDB

? Для каждого подписчика, полученного в результате запроса, производится установка его адреса электронной почты в качестве адреса назначения для отправляемого объекта, после чего происходит отправка почты

? В управляющем элементе предварительного просмотра выводится число отправленных сообщений

В рассмотренном коде существует несколько моментов, на которые следует обратить внимание. Прежде всего в дополнение к обычным пространствам имен, которые объявлялись и для других страниц, на этот раз необходимо объявлять еще и пространство имен System.Web,Mail, содержащее в себе классы, позволяющие создавать сообщения и отправлять их по электронной почте посредством использующейся по умолчанию SMTP-службы, инсталлируемой на Windows 2000 Server.

Следующий момент, на который следует обратить внимание, имеет отношение к самой первой строке кода:

Server.ScriptTimeout = 3 600;
830

Практический пример

Отправка отдельного сообщения — очень быстрое задание, однако если есть несколько тысяч подписчиков, то на это может потребоваться значительное время — несколько минут илн даже больше. Те из вас, кто уже знаком с программированием на традиционном ASP, знают, что по умолчанию странице дается 90 секунд на выполнение кода сценария и на отправку всего сгенерированного HTML-кода браузеру. Это значение, использующееся по умолчанию, может быть изменено администратором I1S, либо “зашито” в программу страницы — что мы в данном случае н делаем, устанавливая максимальное время, в течение которого страница должна завершить свое выполнение, равное одному часу.

Класс Utilities

В файле sendEmaii.cs с кодом поддержки для замены специальных тегов в теле и предмете сообщения используется класс utilities. Ниже приводится исчерпывающий список методов класса. Обратите внимание на то, что они описаны как статические; это означает, что, для того чтобы ими воспользоваться, нет необходимости создавать экземпляр данного класса:

Класс Utilities Метод

public static string ReadTextFile(string FilePath)

public static bool SaveRextFile(string FilePath,

string FileText)

public static string

ProcessListTags(string Message,

string ConnString, int ListID)

public static string

ProcessSubscriberTags(string Message,

string ConnString, int SubscrlD)

public static string

ProcessSettingsTage(string Message,

string SettingsFilePath)

Описание

Позволяет получать содержимое заданного файла
Предыдущая << 1 .. 384 385 386 387 388 389 < 390 > 391 392 393 394 395 396 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.