Языки

» Html
» Java Script

» PHP

» Perl

» ASP

» CGI

» Xml

» Dhtml

» VBScript

» Java

» Css

Уроки

» Photoshop

» Corel Draw

» Dreamwawer

» Flash MX

Скачать

» Программы

» Книги

Шаблоны

» Сайтов

» Flash

» Скрипты

Active Server Pages

  » ASP для новичков

     » Главная страница

     » ASP для новичков

Использование электронной почты

Весьма часто разработчику Web-приложений приходится использовать в своих проектах функцию автоматической отправки электронной почты. Чаще всего электронные письма, которые создаются и отправляются автоматически, без участия администраторов, содержат какие-либо уведомления. Например, о совершении покупки в онлайновом магазине, или о подписке на рассылку новостей сайта. Так или иначе, практически ни один из серьезных проектов не обходится без использования электронной почты, и, следовательно, нам необходимо рассмотреть механизм ее использования в работе Web-приложений.

Для этого применяется класс SmtpMaii, располагающийся в пространстве имен System.Web.Mail. Основное его свойство SmtpServer типа string содержит адрес почтового сервера, на который будет отсылаться сообщение. А метод send отсылает письмо на этот сервер. В качестве параметра этому методу передается значение типа MaiiMessage. Именно этот тип полностью определяет отсылаемое сообщение. Рассмотрим этот тип подробнее.

  • Attachments. Свойство задает список файлов, присоединяемых к письму Свойство имеет значение типа iList. Этот тип является коллекцией наименований файлов.
  • всс. Свойство типа string. Его значением является список адресов электронной почты, по которым будет отправлено электронное письмо. Следует, однако, заметить, что в этом свойстве задаются адреса, входящие в список ВСС (Blind Carbon Сору), т. е. получатели, чьи адреса указаны в полях То (Кому) и Сору (Копия) не увидят в заголовке письма адреса из списка ВСС. Адреса, входящие в список ВСС, разделяются запятой.
  • Body. Свойство типа string. В нем находится само тело электронного письма.
  • BodyEncoding. Свойство типа Encoding. Задает кодировку символов сообщения. Тип Encoding является перечислимым типом.
  • BodyFormat. Свойство типа MailFormat, в котором устанавливается формат тела электронного письма. Свойство может принимать значения Text и Html.
  • Сс. Свойство типа string. В этом свойстве записываются адреса, разделенные запятыми, по которым будет отправлена копия электронного сообщения.
  • From. Свойство типа string, в котором указывается электронный адрес отправителя письма.
  • Priority. Свойство перечислимого типа MaiiPriority, в котором указывается приоритет отсылаемого письма. Свойство может принимать значения High, Low И Normal.
  • Subject. Свойство типа string. В нем записывается тема отправляемого письма.
  •   то. Свойство типа string. В нем указывается адрес электронной почты, по которому будет отправлено создаваемое сообщение.

Теперь, когда мы знаем структуру объектов, применяемых для отправки электронных писем, рассмотрим пример использования этой технологии. Создадим Web-приложение, которое будет предназначено для отправки ^пользователем сообщений по электронной почте.

На стартовой странице, которую мы сохраним под именем default.aspx, следует разместить три однострочных поля текстового ввода. В первое из них .пользователь будет вводить адрес получателя письма, во второе — обратный адрес, а третье поле предназначено для указания темы отправляемого сообщения. Также нам потребуется одно многострочное поле, в котором пользователь будет писать текст сообщения, и кнопка, подтверждающая отправку сообщения. К первым двум полям ввода, которые будут предназначены для ; ввода адресов электронной почты, следует присоединить компоненты под 'названием RegularExpressionValidator. Они будут следить за правильностью ввода адресов. В листинге 3.51 приведен HTML-код Web-страницы в режиме ее разработки.

Листинг 3.51

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="default.aspx.vb" Inherits="mailer.WebForml"%>

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

<HTML>

<HEAD>

<titlex/title>

<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">

<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">

<meta name="vs_defaultClientScript" content="JavaScript">

<meta name="vs_targetSchema" con-tent="http://schemas.microsoft.com/intellisense/ie5">

</HEAD>

<body MS_POSITIONING="GridLayout">

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

<asp:Label id="Labell" style="Z-INDEX: 101; LEFT: 37px;

POSITION: absolute;

TOP: 24px" runat="server" Width="257px" Height="19px"> Виртуальный no4TaMT</asp:Label>

<asp;RegularExpressionValidator id="RegularExpressionValidator3" style="Z-INDEX: 110; LEFT: 34px;

POSITION: absolute;

TOP: 149px" runat="server" ЕггогМеззаде="Введен неверный адрес электронной почты"

 ControlToValidate="TextBox4" ValidationExpression="\w+([-+.]\w+)*@\ w+([-.]\w+)*\.\w+([-. ] \w+)*"X/asp:RegularExpressionValidator>

<asp:TextBox id="TextBox4" style="Z-INDEX: 109; LEFT: 195px;

POSITION: absolute;

TOP: 115px" runat="server" Width="193px" Height="24px"x/asp:TextBox>

<asp:Label id="Labe!4" style="Z-INDEX: 108; LEFT: 37px;

POSITION: absolute;

TOP: 122px" runat="server" Width="151px" Height= "17рх">Адрес отправителЖ/asp: Label>

<asp:RegularExpressionValidator id="RegularExpressionValidator2" style="Z-INDEX: 104; LEFT: ЗЗрх;

POSITION: absolute;

TOP: 91px" runat="server" ЕггогМеззаде="Введен неверный адрес электронной почты" 4>ControlToValidate="TextBoxl" ValidationExpression="\w+([-+.]\w+)*@\ w+{ [-%>. 1 \w+) *\. \w+{ [-. ] \w-t-) *"x/asp:RegularExpressionValidator>

<asp:Label id="Labe!2" style="Z-INDEX: 102; LEFT: 37px;

POSITION: absolute;

TOP: 59px" runat="server" Width="127px" Height= "19рх">Дцрес получателя</азр^аЬе!>

<asp:TextBox id="TextBoxl" style="Z-INDEX: 103; LEFT: 195px;

POSITION: absolute;

TOP: 52px" runat="server" Width="193px" Height="24px"x/asp:TextBox>

<asp:RegularExpressionValidator id="RegularExpressionValidatorl" style="Z-INDEX: 105; LEFT: ЗЗрх;

POSITION: absolute;

TOP: 91px" runat="server" ЕггогМеззаде="Введен неверный адрес электронной почты" ControlToValidate="TextBoxl" ValidationExpression="\w+([-+.]\w+)*@\ w+([-.]\w+)*\.\w+([-.]\w+)*"x/asp:RegularExpressionValidator>

<asp:Label id="Labe!3" style="Z-INDEX: 106; LEFT: 37px;

 POSITION: absolute;

TOP: 186px" runat="server">TeMa письма</азр:Label>

<asp:TextBox id="TextBox2" style="Z-INDEX: 107; LEFT: 195px;

POSITION: absolute;

TOP: 177px" runat="server" Width="192px" Height="26px"x/asp:TextBox>

<asp:Label id="Labe!5" style="Z-INDEX: 111; LEFT: 37px;

POSITION: absolute;

TOP: 220px" runat="server">TeKCT nMCbMa</asp:Label>

<asp:TextBox id="TextBox3" style="Z-INDEX: 112; LEFT: 37px;

POSITION: absolute; TOP: 246px" runat="server" Width="353px" Height="99px" Rows="5"x/asp:TextBox>

<asp:Button id="Buttonl" style="Z-INDEX: 113; LEFT: 41px;

 POSITION: absolute;

TOP: 358px" runat="server" Width="166px" Height="24px" Text= "Отправить nMCbMO"x/asp:Button>

</form>

</body>

</HTML>

После того, как пользователь заполнит все поля и нажмет на подтверждающую кнопку, необходимо сформировать и отправить письмо. Этим будет заниматься класс, связанный с проектируемой страницей. Код этого класса приведен в листинге 3.52.

Листинг 3.51

Public Class WebForml

Inherits System.Web.UI.Page

Protected WithEvents Labell As System.Web.Ul.WebControls.Label Protected WithEvents Label2

As System.Web.Ul.WebControls.Label Protected WithEvents TextBoxl

As System.Web.UI.WebControls.TextBox

Protected WithEvents RegularExpressionValidatorl

As System.Web.UI.Webcontrols.RegularExpressionvalidator

Protected WithEvents Label3

As System.Web.Ul.WebControls.Label Protected WithEvents TextBox2

As System.Web.UI.WebControls.TextBox

Protected WithEvents RegularExpressionValidator2

As System.Web.UI.Webcontrols.RegularExpressionvalidator

Protected WithEvents Label4 As System.Web.Ul.WebControls.Label Protected WithEvents TextBox4

As System.Web.UI.WebControls.TextBox

Protected WithEvents RegularExpressionValidatorS

As System.Web.UI.WebControls.RegularExpressionvalidator

Protected WithEvents Labels

As System.Web.UI.WebControls.Label Protected WithEvents TextBoxS

As System.Web.Ul.WebControls.TextBox Protected WithEvents Buttonl

As System.Web.Ul.WebControls.Button

iRegion " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.

<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender

As System.Object, ByVal e

As System.EventArgs) Handles MyBase.Init

'CODEGEN: This method call is required by the Web Form Designer

 'Do not modify it using the code editor. InitializeComponent() End Sub

#End Region

Private Sub Page_Load(ByVal sender

As System.Object, ByVal

e As System.EventArgs) Handles MyBase.Load

'Put user code to initialize the page here

End' Sub

Private Sub Buttonl_Click(ByVal sender As System.Object, ByVal

e As System.EventArgs) Handles Buttonl.Click

Dim email As New Web.Mail.MailMessage() Dim smtp

As New Web.Mail.SmtpMail() email.To = TextBoxl.Text email.From = TextBox4.

Text email.Subject = TextBox2.Text email.Body = TextBox3.Text

smtp.SmtpServer = "my.mail.ru" 'Задали имя используемого SMTP-сервера smtp.Send(email)

Response.Redirect("Webform.aspx")

End Sub

End Class

Рассмотрим несколько внимательнее обработчик события Buttoni_ciick. Для отправки электронного письма нам потребуются две переменные. Одна из них будет иметь тип MailMessage, и в ней будет располагаться полное описание отсылаемого сообщения, а вторая переменная будет иметь тип SmtpMail. Вторая переменная предназначена уже для отсылки созданного сообщения.

При объявлении этих переменных мы одновременно и создаем экземпляры соответствующих объектов при помощи оператора New. Следует также отметить, что искомые классы находятся в пространстве имен System.Web.Mail. Так как прямые вызовы конструкторов этих классов встречаются в нашей процедуре всего два раза, автор счел возможным не импортировать все пространство имен, а вместо этого использовать полные наименования конструкторов.

После того, как переменные созданы, можно приступать к их заполнению. Данные, введенные пользователем в поля ввода, мы присваиваем соответствующим свойствам переменной email. После того, как электронное сообщение сформировано, его необходимо отправить. Для этого необходимо воспользоваться переменной smtp. Сначала задать доменное имя или IP-адрес используемого SMTP-сервера при помощи свойства SmtpServer, а затем, воспользовавшись методом send, отправить письмо.

После того, как письмо будет отправлено, пользователь будет переадресован на другую Web-страницу, на которой отображается всего лишь сообщение о том, что электронное письмо отправлено успешно. В силу того, что эта страница максимально проста, мы не будем приводить ее листинга здесь.

Листинг 3.53

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

<HTML> <HEAD>

<title></title>

<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">

<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">

<meta name="vs_defaultClientScript" content="JavaScript">

<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">

</HEAD>

<body MS_POSITIONING="GridLayout">

<form< name="Forml" method="post" action="default.aspx" language= "javascript" 4>onsubmit="ValidatorOnSubmit();" id="Forml">

<input type="hidden" name="__VIEWSTATE" value="dDwtNzQ!ODMxMDQ7Oz4=" />

<script language="javascript" src="/aspnet_client/system_Web/ l_0_2914_16/WebUIValidation.js"X/script>

<span id="Labell" style="height:19px;width:257px;Z-INDEX: 101; LEFT: 37px;

POSITION: absolute; TOP: 24рх">Виртуальный почтамт</зрап>

<span id="RegularExpressionValidator3" controltovalidate="TextBox4" еггогтеззаде="Введен неверный адрес электронной почты" evaluationfunction= "RegularExpressionValidatorEvaluatelsValid" validationexpression="\ w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" style="color:Red;Z-INDEX:110; LEFT:34px;

POSITION:absolute;

TOP:149px;visibility:hidden;">Введен неверный адрес электронной почты</зрап>

<input name="TextBox4" type="text" id="TextBox4"

style="height:24px;width:193px;Z-INDEX: 109; LEFT: 195px;

POSITION: absolute;

TOP: 115px" />

<span id="Labe!4" style="height:17px;width:151px;Z-INDEX: 108; LEFT: 37px;

POSITION: absolute; TOP: 122рх">Ддрес отлравителя</зрап>

<span id="RegularExpressionValidator2" controltovalidate="TextBoxl" еггоппеззаде="Введен неверный адрес электронной почты" evaluationfunction= "RegularExpressionValidatorEvaluatelsValid" validationexpression="\ w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" style="color:Red;Z-INDEX:104; EFT:33px;

POSITION:absolute;TOP:91px;visibility:hidden; ">Введен неверный адрес электронной почты</зрап>

<span id="Labe!2" style="height:19px;width:127px;Z-INDEX: 102; LEFT: 37px;

POSITION: absolute;

TOP: 59рх">Адрес получателя</зрап>

<input name="TextBoxl" type="text" id="TextBoxl"

style="height:24px;width:193px;Z-INDEX: 103; LEFT: 195px;

 POSITION: absolute;

TOP: 52px" />

<span id="RegularExpressionValidatorl" controltovalidate="TextBoxl" еггогтеззаде="Введен неверный адрес электронной почты" evaluationfunction= "RegularExpressionValidatorEvaluatelsValid" validationexpression="\ w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" style="color:Red;Z-INDEX:105; LEFT:33px;

POSITION:absolute;

TOP:91px;visibility:hidden;">Введен неверный адрес электронной почты</зрап>

<span id="Labe!3" style="Z-INDEX: 106; LEFT: 37px;

POSITION: absolute;

TOP: 186рх">Тема письма</зрап>

<input name="TextBox2" type="text" id="TextBox2" style= "height:26px;width:192px;Z-INDEX: 107; LEFT: 195px;

POSITION: absolute;

TOP: 177px" />

<span id="Labe!5" style="Z-INDEX: 111; LEFT: 37px;

POSITION: absolute; TOP: 220рх">Текст письма</зрап>

<input name="TextBox3" type="text" id="TextBox3" style= "height:99px;width:353px;Z-INDEX: 112; LEFT: 37px;

POSITION: absolute;

TOP: 246px" />

<input type="submit" name="Buttonl" value="OTnpaBMTb письмо" onclick= "if (typeof(Page ClientValidate) == 'function') Page_ClientValidate(); " language="javascript" id="Buttonl" style="height:24px;width:166px;

Z-INDEX: 113; LEFT: 41px; POSITION: absolute;

TOP: 358px" />

<script language="javascript">

var Page_Validators = new

Array (document . all [ "RegularExpressionValidatorS " ] document . all [ "RegularExpressionValidator2"] ,

document . all [ "RegularExpressionValidatorl" ] ) ;

</script>

<script language=" javascript"> <! — \ var Page_ValidationActive = false/-

if (typeof (clientlnformation) != "undefined" && clientlnf ormation. appName .

indexOf ("Explorer") != -1) {

if (typeof (Page_ValidationVer) == "undefined")

alert ("Unable to find script library ' /aspnet_client/ system_Web/l_0_2914_16/WebUIValidation. js' .

Try placing this file manually, or reinstall by running 'aspnet_regiis -c'.");

else if (Page_ValidationVer l~ "121")

alert ("This page uses an incorrect version of WebUIValidation. js. The page expects version 121.

The script library is " + Page_ValidationVer + ".");

else

ValidatorOnLoad ( ) ; }

function ValidatorOnSubmit () { if (Page_ValidationActive) { ValidatorConmonOnSubmit ( ) ;

</script>

</form>

</body>

</HTML>

Естественно, HTML-код страницы получился столь большим из-за того, что при ее создании были использованы компоненты системы проверки достоверности, которые реализуются при помощи Java-сценариев, действующих на стороне пользователя.

Сохранить документ

Сохранить документ (.doc)

Распечатать документ

Напечатать

 

Следующий урок


Общение
» Чат

» Форум

Реклама 

Здесь может быть Ваша реклама

Поиск

» Поиск

Статистика 

Связь
» Web дизайнер

» Ваша реклама

» Отзывы

» О проекте

 



Сайт управляется системой uCoz