|
|||||||||||||||||||||
|
|||||||||||||||||||||
|
Announcements
Want a new Job?
Chapters
Services
Feature Zones
|
IntroductionThis article explores the features of an email system developed in a simple manner and shows how to create a simple mail service without taking much effort. I am confident that whoever reads this article will get a fairly good idea about the email service and the concepts behind the mail server which is based on SMTP. The problemHow often you come across problems that are caused due to the lack of technical knowledge and the core concepts behind the framework. This article explores the concepts behind the mail server in a most simple manner. The article:
Exploring the technologySMTP stands for Simple Mail Transfer Protocol. The emails are sent using this perfect protocol. The .NET Framework supplies the Pre-requisites for the mail serverFirst of all, you have to check whether the SMTP service is enabled in the IIS which is the Internet Information service (it's a Windows component shipped with the operating system). You can check this service in the Add/Remove section seen in the control panel:
Click the Windows Component in the Add/Remove Programs section and you will get the screen shown below:
See whether IIS is checked or not, if it is checked (installed) click IIS (Internet Information Services) and you will get the screen shown below:
Then, check whether the SMTP service is installed or not. If the service is not available, you have to select the SMTP service and follow the wizard. Sometimes it may ask for the Windows XP CD for installing the Windows component. Now the SMTP mail service is available for the application. Configuration and settingsFor configuring the SMTP server you have to follow the steps given below:
Code snippetsThe code snippet for this project is explained below: private void SendMail()
{
try
{
MailMessage Email=new MailMessage(); //Creating the Mail Message
//object.
Email.To=txtTo.Text; //Storing the To value in
//the object.
Email.From=txtFrom.Text; //Storing the From value
//in the object.
Email.Cc=txtCC.Text; //Storing the CC value in
//the object.
Email.Bcc=txtBCC.Text; //Storing the BCC value in
//the object.
Email.Subject=txtSubject.Text; //Storing the Subject value
//in the object.
Email.Body=txtMessage.Text; //Specifies the email body.
Email.Priority=MailPriority.High; //Setting priority to the mail
//as high,low,or normal
Email.BodyFormat=MailFormat.Text; //Formatting the mail as html
//or text.
//Checking whether the attachment is needed or not.
if(rbtnAttach.Checked)
{
//Adding attachment to the mail.
Email.Attachments.Add(
new MailAttachment(FileBrowse.Value));
}
//Specifying the real SMTP Mail Server.
SmtpMail.SmtpServer.Insert(0,"127.0.0.1");
SmtpMail.Send(Email); //Sending the mail.
Reset(); //calling the reset method to
//erase the text entered.
lblMessage.ForeColor=Color.Navy;
lblMessage.Text=
"*Your email has been sent successfully-Thank You";
}
//Handling the Exception
catch(Exception exc)
{
lblMessage.Text="Send error:"+exc.ToString();
lblMessage.ForeColor=Color.Red;
}
}
Call the private void btnSend_Click(object sender, System.EventArgs e)
{
SendMail();
}
The code block in the private void Reset()
{
//Seeking for the controls in the active webform.
Control myForm=Page.FindControl("Form1");
//Iterating each control.
foreach(Control ctl in myForm.Controls)
{
// Checking whether it is a text box
// and clear when it is a textbox
if(ctl.GetType().ToString().Equals("System.Web.UI.WebControls.TextBox"))
((TextBox)ctl).Text="";
}
}
Call the private void btnCancel_Click(object sender, System.EventArgs e)
{
Reset();
}
Final solutionOur code now looks like this: using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Web.Mail;
namespace Email
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label lblFrom;
protected System.Web.UI.WebControls.Label lblCC;
protected System.Web.UI.WebControls.TextBox txtFrom;
protected System.Web.UI.WebControls.TextBox txtCC;
protected System.Web.UI.WebControls.TextBox txtTo;
protected System.Web.UI.WebControls.Label lblTo;
protected System.Web.UI.WebControls.Label lblEmailService;
protected System.Web.UI.WebControls.TextBox txtBCC;
protected System.Web.UI.WebControls.Label lblBCC;
protected System.Web.UI.WebControls.Label lblSubject;
protected System.Web.UI.WebControls.TextBox txtSubject;
protected System.Web.UI.WebControls.Label lblMessage;
protected System.Web.UI.WebControls.TextBox txtMessage;
protected System.Web.UI.WebControls.Button btnSend;
protected System.Web.UI.HtmlControls.HtmlInputFile FileBrowse;
protected System.Web.UI.WebControls.Label lblAttachment;
protected System.Web.UI.WebControls.RadioButton rbtnAttach;
protected System.Web.UI.WebControls.RadioButton rbtnDetachment;
protected System.Web.UI.WebControls.Button btnCancel;
public string strAttachment;
private void Page_Load(object sender, System.EventArgs e)
{
lblMessage.Text="";
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the
// ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.rbtnDetachment.CheckedChanged +=
new System.EventHandler(this.rbtnDetachment_CheckedChanged);
this.btnCancel.Click +=
new System.EventHandler(this.btnCancel_Click);
this.btnSend.Click +=
new System.EventHandler(this.btnSend_Click);
this.rbtnAttach.CheckedChanged +=
new System.EventHandler(this.rbtnAttach_CheckedChanged);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
//Method for sending the email
//***************************************************************
private void SendMail()
{
try
{
//Creating the Mail Message object.
MailMessage Email=new MailMessage();
//Storing the To value in the object reference.
Email.To=txtTo.Text;
//Storing the From value in the object reference.
Email.From=txtFrom.Text;
//Storing the CC value in the object reference.
Email.Cc=txtCC.Text;
//Storing the BCC value in the object reference.
Email.Bcc=txtBCC.Text;
//Storing the Subject value in the object reference.
Email.Subject=txtSubject.Text;
//Specifies the email body.
Email.Body=txtMessage.Text;
//Setting priority to the mail as high,low,or normal
Email.Priority=MailPriority.High;
//Formatting the mail as html or text.
Email.BodyFormat=MailFormat.Text;
//Checking whether the attachment is needed or not.
if(rbtnAttach.Checked)
{
//Adding attachment to the mail.
Email.Attachments.Add(
new MailAttachment(FileBrowse.Value));
}
//specifying the real SMTP Mail Server.
SmtpMail.SmtpServer.Insert(0,"127.0.0.1");
SmtpMail.Send(Email);//Sending the mail.
//calling the reset method to erase all the data
//after sending the mail.
Reset();
lblMessage.ForeColor=Color.Navy;
//User information after submission.
lblMessage.Text=
"*Your email has been sent successfully-Thank You";
}
//Catching Exception
catch(Exception exc)
{
Reset();
lblMessage.Text="Send error:"+exc.ToString();
lblMessage.ForeColor=Color.Red;
}
}
//Method to reset the text fields.
//***********************************************************
private void Reset()
{
//Seeking for the controls in the active webform.
Control myForm=Page.FindControl("Form1");
//Iterating each control.
foreach(Control ctl in myForm.Controls)
{
//Checking whether it is a text
//box and clear when it is a textbox.
if(ctl.GetType().ToString().Equals(
"System.Web.UI.WebControls.TextBox"))
((TextBox)ctl).Text="";
}
}
//Event fires for sending the mail.
//***********************************************************
private void btnSend_Click(object sender, System.EventArgs e)
{
SendMail();
}
//Event for cancelling the mail.
//***********************************************************
private void btnCancel_Click(object sender, System.EventArgs e)
{
Reset();
}
//Event for enabling or disabling the File browser.
//************************************************************
private void rbtnAttach_CheckedChanged(object sender,
System.EventArgs e)
{
FileBrowse.Disabled=false;
}
//Event for enabling or disabling the File browser.
//************************************************************
private void rbtnDetachment_CheckedChanged(object sender,
System.EventArgs e)
{
FileBrowse.Disabled=true;
}
//*************************************************************
}
}
Using the solutionDownload the source code files given above in the zip format and copy the contents into the root directory (e.g. C:\Inetpub\wwwroot). Go to the Internet Information Services and create a virtual directory named EmailSystem and give the correct path for mapping. Solutions for some problemsThe Error "Could not access 'CDO.Message' object"Solution1Specify a valid mail server for the Solution2If you are using "localhost" or "127.0.0.1" as the Solution3If you are using "localhost" or "127.0.0.1" as the The transport failed to connectSolution1The above error is a network related error. Now, make sure the server | ||||||||||||||||||||