Одной из наиболее распространенных функций, используемых в веб-разработке, является отправка электронной почты с веб-страницы. Прежде чем вы спросите, я дам вам несколько причин, почему вы можете захотеть отправить электронное письмо из своего веб-приложения:
Конечно, существует гораздо больше ситуаций, когда целесообразно отправлять электронную почту из ваших веб-приложений, и вам решать, как именно и где вы собираетесь реализовать эту функцию.
Введите: .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"> </td> <td class="main"><input type="Submit" id="btnSubmit" OnServerClick="btn_Click" value="Send" runat="server" /></td> </tr> </table> </form> </body> </html>