Статьи

Отправка электронной почты в ASP.NET

Одной из наиболее распространенных функций, используемых в веб-разработке, является отправка электронной почты с веб-страницы. Прежде чем вы спросите, я дам вам несколько причин, почему вы можете захотеть отправить электронное письмо из своего веб-приложения:

  • создать веб-страницу «Оставьте свой отзыв»

  • реализовать скрипт «забытый пароль», который отправляет пароль на адрес электронной почты пользователя

  • отправить автоматическое приветствие вашему новому подписчику на рассылку

  • отправлять автоматические уведомления об обновлениях по электронной почте

  • отправлять автоматические уведомления по электронной почте при возникновении ошибки в вашем веб-приложении

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

    Введите: .NET

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

    1. Импортируйте пространство имен и создайте экземпляры необходимых классов

    Мы собираемся использовать SmtpMail и SmtpMail , которые принадлежат System.Web.Mail имен System.Web.Mail . Чтобы их использовать, нам нужно импортировать System.Web.Mail имен System.Web.Mail следующим образом:

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

    Класс MailMessage предоставляет свойства и методы для создания сообщения электронной почты. Чтобы построить наше электронное сообщение, нам нужно создать экземпляр этого класса:

     Dim objMail As New MailMessage() 

    2. Установите свойства объекта

    Далее мы должны установить все свойства объекта objMail :

     ' The email address of the sender  objMail.From = "[email protected]"   ' The email address of the recipient  objMail.To = "[email protected]"   ' The email address of the Cc recipient  objMail.Cc = "[email protected]"   ' The email address of the Bcc recipient  objMail.Bcc = "[email protected]"   ' The format of the message - it can be MailFormat.Text  or MailFormat.Html  objMail.BodyFormat = MailFormat.Text   ' The priority of the message  - it can be MailPriority.High,  MailPriority,Normal or MailPriority.Low  objMail.Priority = MailPriority.High   'The subject of the message  objMail.Subject = "My first ASP.NET email"   'The message text  objMail.Body = "This is my first email sent via  ASP.NET. It was easier than I thought :)" 

    После того, как все свойства нашего нового сообщения электронной почты (некоторые из них являются необязательными) установлены правильно, остается только отправить сообщение.

    3. Отправьте сообщение

    Если у вас есть опыт отправки электронной почты из классического сценария ASP с помощью CDONTS вы можете подумать, что класс MailMessage имеет метод Send или что-то подобное. Ну, способ, которым ASP.NET отправляет сообщения электронной почты, немного отличается от ASP.

    Нам нужно использовать статический метод Send класса SmtpMail , передавая наш экземпляр objMail . Вы можете спросить «что такое» статический метод «? Статический метод — это метод, который не связан с экземпляром типа. Примером экземпляра типа является наш объект objMail . Недопустимо ссылаться на статический член класса через экземпляр. Правильный способ сделать это:

     SmtpMail.Send(objMail) 

    Если вы хотите указать SMTP-сервер, отличный от используемого по умолчанию, вам нужно установить свойство SmtpMail класса SmtpMail :

     SmtpMail.SmtpServer = "smtp.your-server.com" 
    Резюме

    Таким образом, чтобы отправить электронное письмо со страницы ASP.NET, вам необходимо:

  • импортируйте System.Web.Mail имен System.Web.Mail на страницу ASP.NET

  • создать экземпляр класса MailMessage

  • установить все свойства экземпляра MailMessage

  • отправить сообщение методом SmtpMail.Send

    И, наконец, для начала, вот полный функциональный код страницы ASP.NET, который отправляет отзывы пользователей по электронной почте веб-мастеру:

     <%@ Page Language="VB" EnableSessionState="False"  EnableViewState="False" Trace="False" Debug="False"%>  <%@ Import Namespace="System.Web.Mail" %>  <script language="VB" runat=server>   Sub Page_Load(Sender as Object, E as EventArgs)    If Page.IsPostBack Then        lblResponse.Text = "Your email has been sent."    End If  End Sub   Sub btn_Click(sender as Object, e as System.EventArgs)  If  Request.Form("Email") <> "" Then    Dim objMail As New MailMessage()    objMail.From = "[email protected]"    objMail.To = Request.Form("Email")    objMail.Subject = Request.Form("Subject")    objMail.Body = Request.Form("Message")    objMail.BodyFormat = MailFormat.Text    SmtpMail.SmtpServer = " smtp.your-server.com"    SmtpMail.Send(objMail)  Else    lblResponse.Text = "Please enter an email address."  End If  End Sub   </script>  <html>  <head>  <style>  .main {font-family:Verdana; font-size:12px;}  .title {font-family:Verdana; font-size:18px; font-weight:bold;}  </style>  </head>  <body>  <span class="title" align="center">Send email from  an ASP.NET page</span>   <br><br><asp:Label class="main" id="lblResponse"  runat="server"/>   <form method="POST" name="MainForm" runat="server">  <table>  <tr>    <td class="main" align="right">Email:</td>    <td class="main"><input type="text"    class="main" name="Email" value=""></td>  </tr>  <tr>    <td class="main" align="right">    Subject:</td>    <td class="main"><input type="text"    class="main" name="Subject" value=""></td>  </tr>  <tr>    <td class="main" align="right"    valign="top">Message:</td>    <td class="main"><textarea name="Message"    cols="50" rows="8"></textarea></td>  </tr>    <tr>    <td class="main">&nbsp;</td>    <td class="main"><input type="Submit"    id="btnSubmit" OnServerClick="btn_Click" value="Send"    runat="server" /></td>  </tr>  </table>  </form>  </body>  </html>