Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #30, МАЙ 2003 г.

Mail Sender

Владимир Егоров aka Dr.NET

Спецвыпуск Xakep, номер #030, стр. 030-034-4


<%@Import Namespace="System.Web.Mail"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<html>

<head>

<title>Mail Sender</title>

<script language="C#" runat="server">

protected void sendmail(object sender, EventArgs e)

{

try

{

SmtpMail.Send("me@myhost.com",rcptto.Text,subject.Text,text.Text);

lab.Text = "Сообщение отослано.";

rcptto.Text = "";

subject.Text = "";

text.Text = "";

} catch (Exception ex)

{

lab.Text = "Произошла ошибка: "+ex.ToString();

}

}

</script>

</head>

<body>

<form id="Frm" method="post" runat="server">

<asp:Label ID="lab" Runat="server" ForeColor="#ff0000"/>

<table cellpadding="10" cellspacing="0" border="0">

<tr><td>

<asp:Label Runat="server">Кому:</asp:Label></td>

<td><asp:TextBox ID="rcptto" Runat="server" TextMode="SingleLine" Columns="50"/>

</td></tr>

<tr><td>

<asp:Label Runat="server" ID="lab1">Тема:</asp:Label></td>

<td><asp:TextBox ID="subject" Runat="server" TextMode="SingleLine" Columns="50" />

</td></tr>

<tr><td valign="top"><asp:Label Runat="server" ID="lab2">Текст:</asp:Label></td>

<td><asp:TextBox ID="text" Runat="server" TextMode="MultiLine" Columns="50" Rows="10"/>

</td></tr>

<tr><td colspan="2">

<asp:Button ID="submit" Text="отправить" Runat="server" OnClick="sendmail"/>

  <input type="reset" value="очистить"></td></tr>

<tr><td colspan="2">

<asp:RequiredFieldValidator runat="server" id="emailv1" controlToValidate="rcptto" Display="Dynamic" style="color:red" ErrorMessage="Необходимо указать получателя сообщения!<br>"/>

<asp:RegularExpressionValidator runat="server" id="emailv2" controlToValidate="rcptto" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" Display="Dynamic" style="color:red">

Введенный текст не является адресом электронной почты. Пример адреса:

<code>me@myhost.ru</code>.<br/>

</asp:RegularExpressionValidator>

</td></tr>

</table>

</form>

</body>

</html>

Самое главное

Ну а теперь вернемся к скрипту, помещенному между тегами <script> и </script>. Весь скрипт состоит из одной процедуры, которая выполняется при нажатии на кнопку "отправить". Процедуре передаются два аргумента: "object sender" и "EventArgs e". Как истинный прогер, ты, конечно же, понимаешь, что Sender - объект, в котором возникло событие (в нашем случае - нажатие на кнопку), переменная "e" содержит данные о событии. Далее с помощью процедуры SmtpMail.Send(string from, string to, string subject, string text) отсылаем сообщение адресату (названия параметров говорят за себя), перехватывая при этом исключение (если оно возникнет - пишем сообщение об ошибке). Осталась самая малость - очистить поля для новой отправки, что я и сделал, присвоив их свойству Text значения пустой строки.

Ну, вот и все. По-моему, получилось очень просто и быстро. Выбирай вариант по душе. Знай, что PHP всегда работает с одной и той же достаточно большой скоростью. А ASP со второго запуска (типа первый раз - компилится, советую произвести его самостоятельно) начинает рвать так, что никакой PHP и рядом не стоял! Если ты заинтересован написанием Web-приложений на ASP.NET, пиши, задавай вопросы, ибо за этим будущее.

Назад на стр. 030-034-3  Содержание