The System.Web.Mail namespace provides the classes for sending email in .NET. This tutorial explains how to send emails with attachments.
System.Web.Mail
Class: MailMessage manages the mail message contents.
MailMessage
Attachment
Bcc
Body
BodyEncoding
BodyFormat
Cc
From
Header
Message
Priority
Subject
To
Class: MailAttachments manages the mail attachment.
MailAttachments
Class: SmtpMail sends email to the mail server.
SmtpMail
Let us see it step by step:
Create a Visual Basic .NET application and drop the following controls and set the properties accordingly.
Label Text
TextBox Name
txtSMTPServer
txtFrom
txtFromDisplayName
TextBox txtTo
ListBox Name
lstAttachment
txtSubject
txtMessage
Multiline
True
Scrollbars
Both
Button Text
Name
BtnAdd
btnRemove
btnSend
CheckBox Text
chkFormat
OpenFileDialog Name
OFD
DefaultExt
*.*
InitialDirectory
c:\
Multiselect
Invoke the code window and type the following statement above the class declaration.
Imports System.Web.Mail
Within the Class declaration, in the general section, declare variables required for this project.
' Variable which will send the mail Dim obj As System.Web.Mail.SmtpMail 'Variable to store the attachments Dim Attachment As System.Web.Mail.MailAttachment 'Variable to create the message to send Dim Mailmsg As New System.Web.Mail.MailMessage()
Double click on the "Add attachment" button to add the code. Type the following lines:
'Show open dialogue box to select the files to attach Dim Counter As Integer OFD.CheckFileExists = True OFD.Title = "Select file(s) to attach" OFD.ShowDialog() For Counter = 0 To UBound(OFD.FileNames) lstAttachment.Items.Add(OFD.FileNames(Counter)) Next
Double click on the "Remove attachment" button. Type the following lines:
'Remove the attachments If lstAttachment.SelectedIndex > -1 Then lstAttachment.Items.RemoveAt(lstAttachment.SelectedIndex) End If
Double click on the "Send" button. Type the following lines:
Dim Counter As Integer 'Validate the data If txtSMTPServer.Text = "" Then MsgBox("Enter the SMTP server info ...!!!", _ MsgBoxStyle.Information, "Send Email") Exit Sub End If If txtFrom.Text = "" Then MsgBox("Enter the From email address ...!!!", _ MsgBoxStyle.Information, "Send Email") Exit Sub End If If txtTo.Text = "" Then MsgBox("Enter the Recipient email address ...!!!", _ MsgBoxStyle.Information, "Send Email") Exit Sub End If If txtSubject.Text = "" Then MsgBox("Enter the Email subject ...!!!", _ MsgBoxStyle.Information, "Send Email") Exit Sub End If 'Set the properties 'Assign the SMTP server obj.SmtpServer = txtSMTPServer.Text 'Multiple recepients can be specified using ; as the delimeter 'Address of the recipient Mailmsg.To = txtTo.Text 'Your From Address 'You can also use a custom header Reply-To for a different replyto address Mailmsg.From = "\" & txtFromDisplayName.Text & "\ <" & txtFrom.Text & ">" 'Specify the body format If chkFormat.Checked = True Then Mailmsg.BodyFormat = MailFormat.Html 'Send the mail in HTML Format Else Mailmsg.BodyFormat = MailFormat.Text End If 'If you want you can add a reply to header 'Mailmsg.Headers.Add("Reply-To", "testmail@mail.com") 'custom headersare added like this 'Mailmsg.Headers.Add("Manoj", "TestHeader") 'Mail Subject Mailmsg.Subject = txtSubject.Text 'Attach the files one by one For Counter = 0 To lstAttachment.Items.Count - 1 Attachment = New MailAttachment(lstAttachment.Items(Counter)) 'Add it to the mail message Mailmsg.Attachments.Add(Attachment) Next 'Mail Body Mailmsg.Body = txtMessage.Text 'Call the send method to send the mail obj.Send(Mailmsg)
This application is now ready to run, try it.