In this post I will demonstrate how to test your SMTP mail relay server on Windows Server 2012 using an email web form application in 15 EASY STEPS. The form contains ASP.NET 4.0 and C# code and will emulate how a typical web application running on IIS sends emails via a mail relay. I have tweaked the code in the form so that it works perfectly with the SMTP Server config detailed in a previous post of mine. This is to say that it assumes the web application (the email form) runs on the same server environment as your SMTP Server and thereby points to localhost. A screenshot of the form used in this post can be seen directly below:
It was taken from the YouTube videos below, there are 2 parts:
The producer of the videos, YouTube user kudvenkat, also has a website which contains 2 posts that directly correspond to both of the videos above:
The instruction is excellent and the form itself is nice looking and contains more sophisticated code, such as error handling and form validation, than some of the more basic examples I have found on the internet.
I watched both videos attentively and created the project in Visual Web Developer 2010 Express and produced the relevant files and uploaded them to the server. The section below shows the snippets of code that needed to be changed.
As you can see from the above you need to change mailMessage.From to reflect who the email will be sent from. In my case it would be email@example.com. In the line directly below it mailMessage.To.Add needs to be changed to reflect who the email will be sent to. I like all email pertaining to my blog to go to my Gmail email address, change it to your preferred email.
MailMessage mailMessage = new MailMessage(); mailMessage.From = new MailAddress("firstname.lastname@example.org"); mailMessage.To.Add("email@example.com");
The only other section of code that needs to be changed is SmtpClient, and this determines the SMTP mail relay server and what port it is listening on. In my case it is localhost as the SMTP mail relay runs on the same server as the web application and runs on port 25. If the SMTP mail relay runs on another server change the code to reflect it’s fully qualified domain name or IP address and the port it is listening on.
SmtpClient smtpClient = new SmtpClient("localhost", 25);
So the relevant code block resembles the below:
MailMessage mailMessage = new MailMessage(); mailMessage.From = new MailAddress("firstname.lastname@example.org"); mailMessage.To.Add("email@example.com"); mailMessage.Subject = txtSubject.Text; mailMessage.Body = "<b>Sender Name : </b>" + txtName.Text + "<br/>" + "<b>Sender Email : </b>" + txtEmail.Text + "<br/>" + "<b>Comments : </b>" + txtComments.Text; mailMessage.IsBodyHtml = true; SmtpClient smtpClient = new SmtpClient("localhost", 25); smtpClient.Send(mailMessage);
Configure the ASP.NET C# code
To setup the web form application you will need all the relevant files and folder(s) (.aspx, .aspx.cs, .dll, .pdb, bin folder etc) for this to work. I have attached the Visual Studio project files you require in order to create the files to upload to your web server. Click here to download the project files.
1. The Visual Studio project files are compressed in a zip file. Extract them to a folder of your choice. I extracted them to C:\WebFormsDemo per the below:
2. Once the files have been extracted, open them up in your preferred version of Visual Web Developer Express by clicking on File > Open Project:
3. Locate the files you just extracted in Step 1 above, then select WebFormsDemo.sln and click Open:
4. Once the project has opened, go to the Solution Explorer in the far right pane and expand WebForm1.aspx and double-click on WebForm1.aspx.cs:
5. WebForm1.aspx.cs will then open to the left. Scroll down to the relevant section and change mailMessage.From to reflect who the email will be from and mailMessage.To.Add to reflect who the email will be sent to:
6. Hold down CTRL + S keys on your keyboard to save the changes you just made in the previous step. Then right click on WebFormsDemo in the Solution Explorer and select Publish:
7. Choose where you want to save your published files. I published the files to C:\WebDeploy:
Our work in Visual Web Developer Express is now finished.
To configure IIS you will need to ensure that ASP.NET and all relevant IIS modules have been installed. I am assuming you have done this already. As my lab server does not host any live sites I have chosen to use the Default Website to serve my email form application. To configure your site:
8. Upload the files you published in Step 7 above to C:\inetpub\wwwroot\ on the server, this is the location used by the Default Website in IIS:
9. Open IIS, then go to Application Pools and click on DefaultAppPool:
10. Right-click on DefaultAppPool and select Basic Settings:
11. Ensure .NET Framework v4.x is selected, if not select it and save the changes:
12. Right-click on DefaultAppPool again and click Recycle:
13. On the server, open a browser window and go to http://localhost/WebForm1.aspx and the form should load per the below:
14. Fill in the form with valid information and click send:
15. An email will be delivered to your chosen destination email. In my case, the email was sent to my Gmail address:
That’s it! As ever, it is fairly straight-forward when you know. This email form can be used to test your SMTP mail relay or could be incorporated into your site if you require a contact or feedback page.
A special thank-you to kudvenkat for providing the code for the email form. Excellent job indeed!