Today, most sites send mails to users dynamically. This can be to alert users of a new post or send a user their login information. In this tutorial, I will share with you one of the best ways of incorporating this kind of feature into your ASP site. We will start by discussing the method and at the end I will present an example to you. The example will send login information to a user. If you are an advanced user or someone who does not like to read thru, just download the example files and read the setup instruction at the bottom of this page.
The requirements for this tutorial are simple:
IIS or PWS
ASP Email(available for free at ASPemail.com)
When we want our ASP pages to send an e-mail to a user, we have to have the e-mail content stored somewhere, usually in our ASP page. This is the method most people today use. They often store the e-mail message in a string like below:
strMail="Welcome to Bakers.biz," & username & Chr(10) 'Chr(10) is used to skip to the new line
strMail= strMail & "Your order has been successfully queued!" & Chr(10)
strMail=strMail & "Thank you for your business!"
|
Although this is the most common method, it does not mean that it is the best method. Why? Because of one simple reason: it makes it diffcult for you to edit the text and also, it makes your code even dirtier. As a programmer, I always try to include as much code as I can in the ASP file and keep the rest for the include files. In the above example it might not look that bad, but when you get down to business and start sending those 100-lines e-mail to your users using this method, it simply will make your code look dirtier and dirtier.
To fight this problem, I came up with a solution. I decided to use the FileSystemObject to open text files. Now be honest and you tell me, would you like to write an e-mail in an enviroment filled with complex ASP code or in a blank and white editor window of Notepad? Having the e-mail content in a text file can help things be more organized and makes changing the content much quicker and easier. In the example below, we will see how we can use this technique in a real-world scenerio.
The example we are going to discuss will ask for the user's e-mail address and then e-mail the user with their username and password. The content of the e-mail will be read from the text file(ForgotLogin.txt). The application will consist of four total files(including database files and etc.). The files include:
ForgotPass1.asp- The file which will consist of basic a basic HTML form which would ask for the user's e-mail address.
ForgotPass2.asp- The file which will e-mails the user their username and password.
ForgotLogin.txt- Contain the text for the login information.
DB.MDB-A one-table database which will hold the username, password, and the e-mail address of members.
ForgotLogin.txt
As mentioned earlier, this file will contain the text message which will be e-mailed to the user. The content of this file should be:
Hello,
You had requested your login information. Well, here it goes:
Username:{username}
Password:{password}
Sincerely,
The Bakers Team
|
I am sure you must be wondering what the purpose of {username} and {password} in the text file. I will tell you about that in a moment... so hang on!
DB.MDB
You can tell by its name that its an Access file. DB.MDB will have one table called tbl_Users. Below is the basic structure of tbl_Users:
NOTE: You can download all files(including this) that are part of this project as a Zip by clicking here.

ForgotPass1.asp
ForgotPass1.asp is simply going to have an HTML form asking for the e-mail address of the user(as displayed below).
Note that this file(if wanted) could be saved as .HTM but just for the sake of keeping things a ASP, I gave it a .ASP extension.
ForgotPass2.asp
ForgotPass2.asp is where most of the work is done. This page is responsible for retreiving the user login information from the database and then emailing it to the user. Below is the complete source code for this page. We will discuss portion-by-portion next. Note that you can find a link to download the whole project at the end of this tutorial.
<%
Email=Request.Form("Email")
if Len(Email) > 0 Then
strConnect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("DB.mdb")&";"
SQL="SELECT * FROM tbl_Users WHERE tbl_Users.Email='" & email & "'"
Dim objForgotLogin
Set objForgotLogin = Server.CreateObject("Adodb.Recordset") 'Used for pulling main categories from DB
objForgotLogin.Open SQL,strConnect
if objForgotLogin.EOF = False Then
'------------------Code For opening ForgotLogin.txt------------------------
Dim objFSO, objTextFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile(Server.MapPath("ForgotLogin.txt"))
Do While Not objTextFile.AtEndOfStream
strTemp = strTemp & objTextFile.ReadLine & Chr(10)
Loop
'------------------End of code For opening ForgotLogin.txt
strTemp=Replace(strTemp,"{username}",objForgotLogin("Username"))
strTemp=Replace(strTemp,"{password}",objForgotLogin("Password"))
SendMail "Zaid","zaid@designMD.com",strTemp,objForgotLogin("email"),"Your login information is enclosed!"
Response.write "<FONT face='Verdana' size=2>Your login information has been e-mailed To you!"
Set objFSO=Nothing
Set objTextFile=Nothing
Else
Response.Write "<FONT face='Verdana' size=2 color='red'>Your e-mail address could Not be found!"
End if
Set objForgotLogin=Nothing
Else
Response.Write "<FONT face='Verdana' size=2>Please enter an e-mail address</FONT>"
End if
'The function for sending the email using ASPEmail
Function SendMail (FromName,FromEmail,MailContent,MailingAddress,Subject)
Set Mail = Server.CreateObject("Persits.MailSender")
Mail.Host = "smtp.amexol.net" ' Specify a valid SMTP server
Mail.From = FromEmail ' Specify sender's address
Mail.FromName = FromName' Specify sender's name
Mail.AddBcc MailingAddress
Mail.Subject = subject
Mail.Body = MailContent
mail.Send
Set Mail=Nothing
End Function
%>
|
Let us start off by quickly getting thru some of the basics. The first if statement checks to make sure that an e-mail address was atleast entered. If an e-mail address is not entered, an error message is displayed.
If an e-mail address was entered, we have to check to make sure it exist in the database. For this, we have to build the SELECT statement like the one shown below:
SQL="SELECT * FROM tbl_Users WHERE tbl_Users.Email='" & email & "'"
|
Next, we use a recordset object to execute the above SQL query. Notice that strConnect holds the connection string for connecting to DB.MDB.
Dim objForgotLogin
Set objForgotLogin = Server.CreateObject("Adodb.Recordset") 'Used for pulling main categories from DB
objForgotLogin.Open SQL,strConnect
|
Once we have opened the SQL statement, we have to analyze the results. We start out by checking to see whether the EOF property of the recordset is true or false. If it is true, then it means that the user does not exist in the database and therefore displays an error. If its false, it means the user does exist and the application therefore proceeds.
Once it has been made sure that the user exists, we can send the user their username and password. Now comes the part you must be waiting for the most: integrating the content of the text file with the e-mail message to be sent. Well, here is how we do it.
First, look at the code below:
Dim objFSO, objTextFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile(Server.MapPath("ForgotLogin.txt"))
Do While Not objTextFile.AtEndOfStream
strTemp = strTemp & objTextFile.ReadLine & Chr(10)
Loop
|
All this peice of code does is that it opens the text file which holds the contents of the e-mail and saves the file in a temporary string called strTemp. Do you remember that in the text file(forgotlogin.txt), we had text {username} and {password}? Well they were created as the hotspots which we can replace with the real username and password. We do this by using the simple Replace function of ASP/VBScript. What the code below does is that it first finds the word {username} in strTemp and then replaces it with the username the SQL query returned. The same is done for replacing the {password} with the "real" password.
strTemp=Replace(strTemp,"{username}",objForgotLogin("Username"))
strTemp=Replace(strTemp,"{password}",objForgotLogin("Password"))
|
Well, belive it or not but once we have done this, all we have to do next is to send the e-mail to the user. We do this using the following code:
SendMail "Zaid","zaid@designMD.com",strTemp,objForgotLogin("email"),"Your login information is enclosed!"
|
Notice that we specify strTemp as the content of the e-mail. Also, we get the user's e-mail address from the recordset(objForgotLogin("email")).
That is really all there is to this example.
NOTE:SendMail is a function I quickly developed to keep the function for e-mailing the user out of the main application code. I wont get into the details of it as it is very self-explanatory. You can goto ASPemail.com if you want the details about ASPEmail.
Setting up the applciation
Setting up this example is very easy. Just follow the simple steps:
1. Download the example.
2. Unzip the example.
3. Copy the folder named "Example" and paste it into the wwwroot directory.
NOTE:You will have to open the MS Access database and add your e-mail address into tbl_Users before you can test it. Also, this database is for MS Access 2000 and if you have any problems, just re-make the Access file with the fields described in the DB.MDB section at the beginning of the tutorial. Also, you will need to change the connection string in ForgotPass2.asp.
If you continue to have problems, feel free to contact me at zaid@designMD.com.
|