|
Sending E-Mails using ASP.NET by Faisal Khan.
Overview
In this tutorial we will learn how to send e-mails of both text and HTML formats
using classes of System.Web.Mail namespace.
Before delving in to the source code, I'll briefly explain the MailMessage and SmtpMail
classes which we'll be using to send e-mails.
System.Web.Mail.MailMessage
An object of this class represents a single e-mail message. Properties of this class
are listed below :

Properties of MailMessage
To use this class, we create a new object using the empty constructor, set some of
it's properties and then send the message using static method of SmtpMail class's
Send() method.
MailMessage mail = new MailMessage();
mail.To = "receivers@email.address";
mail.From = "senders@email.address";
mail.BodyFormat = MailFormat.Text;
mail.Subject = "Subject of this Email";
mail.Body = "Body of this message.";
SmtpMail.Send(mail);
All the code required to create and send a MailMessage object has been shown above.
If you've understood this code then you don't need to go any further. Just change the
values to suite your needs. In the rest of this article we will create a sendMail.aspx
page which will make use of the above code.
System.Web.Mail.SmtpMail
This class is used to *send* e-mails ( MailMessages ) using SMTP protocol. All we
are interested as far as this tutorial is concerned are the two static methods ( Send() )
it provides. You just use the static method, provide a valid MailMessage object as the
argument, and send it!.

Properties And Methods of SmtpMail
sendMail.aspx
It is time now that we create a simple ASP.NET page which provides a form to you, you
enter the values and hit the "send" button to send the message. A confirmation message is
then displayed.
Create a new .aspx page and save it as sendMail.aspx in a folder accessible by your
server. Now copy and paste the following code in it :
<%@ Page Language="C#" %>
<%@ Import NameSpace="System.Web.Mail" %>
<script runat="server">
protected void Page_Load(Object Sender, EventArgs e) {
if(!Page.IsPostBack)
Message.Text = "Sending E-Mail using ASP.NET";
}
protected void Send_Email(Object Sender, EventArgs e) {
MailMessage mail = new MailMessage();
mail.To = Request.Form["to"];
mail.From = Request.Form["from"];
if(Request.Form["format"].Equals("text"))
mail.BodyFormat = MailFormat.Text;
else
mail.BodyFormat = MailFormat.Html;
mail.Subject = Request.Form["subject"];
mail.Body = Request.Form["body"];
SmtpMail.Send(mail);
Response.Flush();
Message.Text = "Message Sent...<br><br>" +
"<a href=\"sendMail.aspx\">Go Back</a>";
}
</script>
<html>
<head>
<title>Sending E-Mails using ASP.NET ( Part I )</title>
<style>
a { font-size:8pt; font-family:Tahoma; font-weight:normal;
color:maroon; }
</style>
<link rel="stylesheet" href="css/demostyle.css">
</head>
<body bgcolor="white">
<p align="center" class="title">
<asp:label id="Message" runat="server" />
</p>
<% if(!Page.IsPostBack) { %>
<p align="center">All fields are required.</p>
<form method="post" runat="server">
<table width="80%" border="0" align="center" cellpadding="2" cellspacing="2">
<tr>
<td width="20%" align="right">From : </td>
<td><input type="text" name="from"></td>
</tr>
<tr>
<td align="right">To : </td>
<td><input type="text" name="to"></td>
</tr>
<tr>
<td align="right">MailFormat : </td>
<td>
<select name="format">
<option value="text">Text</option>
<option value="html">HTML</option>
</select>
</td>
</tr>
<tr>
<td align="right">Subject : </td>
<td><input type="text" name="subject" style="width:400;"></td>
</tr>
<tr>
<td valign="top" align="right">Body : </td>
<td>
<textarea cols="5" rows="10" name="body" style="width:400;">
</textarea></td>
</tr>
<tr>
<td> </td>
<td>
<input type="submit" OnServerClick="Send_Email" runat="server"
class="submit" value=" " /> Send Email!
</td>
</tr>
</table>
</form>
<% } %>
</body>
</html>
Explanation
The first line tells that we will be using C# to code the ASP.NET page. Second line
is an Import directive which tells the the C# compiler that we are making use
of classes from System.Web.Mail namespace.
<%@ Page Language="C#" %>
<%@ Import NameSpace="System.Web.Mail" %>
Explanation of sendMail.aspx code
Then we enter the script block. Notice that this script block has a "runat" attribute
with a value of "server". This means that the code inside this block is meant to run
on the server-side. In this code block we have two methods; Page_Load() and Send_Email().
<script runat="server">
Page_Load() is actually an event which is raised when the ASP.NET page is loaded. This
method is present in all ASP.NET pages, to make use of this event, all you have to do is
to provide some implementation of this method ( i.e. put some code in this method ). Here
in this method we are checking for the IsPostBack property of Page object. This property
like it's name suggests gives a "true" value when the page has been posted back i.e.
the user has pressed the submit button on the Form to post the page back.
So this Page.IsPostBack property is very useful. It allows us to put both the Form
and Form handler code ( when the Form is posted back ) on the same page. What we do here
is to check this property, and if user has not posted the page back then set the value of
Message control to the provided one. What is a Message control? we'll
see later.
protected void Page_Load(Object Sender, EventArgs e) {
if(!Page.IsPostBack)
Message.Text = "Sending E-Mail using ASP.NET ( Part I )";
}
The second method; Send_Email() is our own event method which is called when
user presses the submit button on the Form. In this method we use the same code we learned
on the first page to create a MailMessage object and then send it using SmtpMail class's
Send() method.
Once done, we set the value of Message control to a confirmation message and
a link back to the Form.
|