Отправка почтового сообщения со страницы ASP.NET
Итак, тема сегодняшнего занятия - весьма насущный вопрос: "Как отправить почтовое сообщение, пользуясь BCL(Base Class Library)?". Или, выражаясь проще: "Что мне сделать, если я хочу программно послать письмо, пользуясь .NET".
Для начала, Вам необходимо убедиться в том, что на Вашей машине работает SMTP Mail Service. Иначе все приведенные ниже примеры на Вашей локальной машине работать не будут.
Послать письмо можно, воспользовавшись классом Smtp.Mail из пространства имен System.Web.Util, поэтому, Вам необходимо добавить это пространство имен. Как это сделать зависит от Вашей среды. Наш пример написан под ASP.NET, в которой нам достаточно указать директиву <%@Import%> с соответствующим параметром Namespace(=System.Web.Util).
Если Вы посылаете письмо из обычного .NET приложения, Вам необходимо написать using System.Web.Util;
И не забудьте подключить System.Web.Util.dll (опция /r: в директивах компилятора или references в Visual Studio.NET)
Для отправки письма служит статический метод Send класса SmtpMail.
Он имеет два перегруженных варианта.
Сигнатура первого:
public static void Send(MailMessage);
И служит он для отправки сообщения, предварительно подготовленного с помощью класса MailMessage.
Второй метод:
public static void Send(string, string, string, string);
Рассмотрим сначала второй метод.public static void Send(
string from,
string to,
string subject,
string messageText
);
Его параметры, как и следует из их названия, служат для указания:
from - E-mail адрес отправителя
to - E-Mail адрес получателя
subject - Тема мообщения
messageText - Текст сообщения
Вот пример кода на ASP.NET - здесь отправляется сообщение от from@senderdomain.ru по адресу to@receiverdomain.ru, тема - "Сообщение отослано с помощью .NET Framework beta1", текст - "Это тестовое письмо, в адресе отправителя и получателя должны быть указаны нужные Вам данные."<%@ Page Language="C#" Debug="true" %>
<%@ Import Namespace="System.Web.Util" %>
<script language="C#" runat=server>
void Page_load(Object sender, EventArgs e){
SmtpMail.Send("from@senderdomain.ru","to@receiverdomain.ru",
"Сообщение отослано с помощью .NET Framework beta1",
"Это тестовое письмо, в адресе отправителя и получателя должны быть"+
" указаны нужные Вам данные.");
}
</script>
<html>
<head>
<title>Отправка почтового сообщения в .NET</title>
</head>
<body>
<h1>Ваше письмо было успешно отослано</h1>
</body>
</html>
Теперь рассмотрим класс MailMessage.
Он содержит все необходимые нам поля и свойства.
Мы будем использовать To, From, Subject, Body, BodyFormat. В следующих статьях Вы узнаете и про остальные поля, в частности, мы научим Вас посылать сообщения с прикрепленными файлами.
Значение полей To, From, Subject, Body ясно из их названия.
BodyFormat служит для указания типа сообщения (text или html), присваиваемое значение должно принадлежать перечислению MailFormat.
<%@ Page Language="C#" Debug="true" %>
<%@ Import Namespace="System.Web.Util" %>
<script language="C#" runat=server>
void Page_load(Object sender, EventArgs e){
MailMessage msg=new MailMessage();
msg.To = "from@senderdomain.ru";
msg.From = "to@receiverdomain.ru";
msg.Subject = "тема сообщения";
//формат, в котором должно быть отослано письмо
msg.BodyFormat = MailFormat.Html;
msg.Body = "<html><body><h1>Это письмо отослано с использованием класса"+
" <b>SmtpMail</b></h1></body></html>";
SmtpMail.Send(msg);
}
</script>
<html>
<head>
<title>Отправка почтового сообщения в .NET</title>
</head>
<body>
<h1>Ваше письмо было успешно отослано</h1>
</body>
</html>
В следующих публикациях мы рассмотрим другие возможности, предоставляемые упомянутыми выше классами.