|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
|
Announcements
Chapters
Services
Feature Zones
|
IntroductionThis application demonstrates the use of some simple but useful things you can do with ASP.NET; uploading, saving and deleting files, and sending email. BackgroundThere are three things we need to do to be able to run this code and I'm going to assume that you will be trying out this code at home on a Windows desktop computer. First, you need to create a virtual directory in IIS to host this web application and set write permission because we will be saving and deleting files that will be email attachments. In the virtual directory, create a folder called "attachments". This is where we will temporarily store the uploaded files to attach to the email. The second thing to do is to make sure that the SMTP server is running and that it can relay mail. From the IIS MMC window, with "local computer" selected on the left, you should see the "Default SMTP Virtual Server", if not you need to install it. Right-click it, go into "Properties", the "Access" tab, and click the "Relay" button. With the "only the list below" radio button selected, you should see the local IP address: 127.0.0.1, if it's not there, you need to add it. The last thing is to set up the SMTP server in the application. In the code, look for this line (line # 149): SmtpMail.SmtpServer = "localhost";
You need to replace "localhost" with the name or IP address of your SMTP mail server. On a Windows desktop computer, "localhost" is the default value and usually works. Using the codeFirst of all, we create a new // Create a new blank MailMessage
MailMessage email = new MailMessage ();
// Set the properties of the MailMessage to the
// values on the form
if (rblMailFormat.SelectedItem.Text == "text")
email.BodyFormat = MailFormat.Text;
else
email.BodyFormat = MailFormat.Html;
email.From = txtSender.Text;
email.To = txtReceiver.Text;
email.Subject = txtSubject.Text;
email.Body = txtBody.Text;
Now for the meat and potatoes of this little web application; the following block of code checks the first of three Open File Dialogs of our web form (the Open File Dialog is an HTML File Field control to which we've added the // Beginning of attachments processing
// Check the first open file dialog for a value
if (ofdAttachment1.PostedFile != null)
{
// Get a reference to PostedFile object
HttpPostedFile ulFile = ofdAttachment1.PostedFile;
// Get size of the file
int nFileLen = ulFile.ContentLength;
// Make sure the size of the file is > 0
if( nFileLen > 0 )
{
// Get the file name
strFileName = Path.GetFileName(ofdAttachment1.PostedFile.FileName);
// Preced the file name with "attachments/" so
// the file is saved to our attachments directory
strFileName = "attachments/" + strFileName;
// Save the file on the server
ofdAttachment1.PostedFile.SaveAs(Server.MapPath(strFileName));
// Create the email attachment with the uploaded file
MailAttachment attach = new MailAttachment(Server.MapPath(strFileName));
// Attach the newly created email attachment
email.Attachments.Add(attach);
// Store filename so we can delete it later
attach1 = strFileName;
}
}
Then we send the email and finish by deleting the attachments. // Set the SMTP server and send the email
SmtpMail.SmtpServer = "localhost";
SmtpMail.Send (email);
// Delete the attachements if any
if (attach1 != null)
File.Delete(Server.MapPath(attach1));
Points of InterestThis little project shows a practical use of the HistoryI've made a minor update to this article and the code, but it's basically the same application. Someone pointed out that I hadn't included the line that adds "attachments/" to the beginning of the filename for the second and third attachments. That's the only thing that has changed in the code. I've also made a few small changes to my explanations and comments.
|
||||||||||||||||||||||