Socket based SMTP client : Smtp Email « Socket Network « VB.Net Tutorial






Socket based SMTP client
'Visual Basic.Net JingCai Programming 100 Examples
'Author: Yong Zhang
'Publisher: Water Publisher China
'ISBN: 750841156

Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
'Imports System
'Imports System.Threading

Imports System.Windows.Forms

public class EmailClientForm
   public Shared Sub Main
        Application.Run(New Form1)
   End Sub
End class

Public Class Form1
  Inherits System.Windows.Forms.Form

  Public Sub New()
    MyBase.New()

    InitializeComponent()

    sHost = SetupForm.txtHost.Text
    sPort = SetupForm.txtPort.Text
    sUser = SetupForm.txtUser.Text
    sAddress = SetupForm.txtAddress.Text
    sName = SetupForm.txtName.Text
  End Sub

  Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
    If disposing Then
      If Not (components Is Nothing) Then
        components.Dispose()
      End If
    End If
    MyBase.Dispose(disposing)
  End Sub

  Private components As System.ComponentModel.IContainer

  Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu
  Friend WithEvents MenuItem1 As System.Windows.Forms.MenuItem
  Friend WithEvents MenuItem3 As System.Windows.Forms.MenuItem
  Friend WithEvents ToolBar1 As System.Windows.Forms.ToolBar
  Friend WithEvents ToolBarButton1 As System.Windows.Forms.ToolBarButton
  Friend WithEvents ImageList1 As System.Windows.Forms.ImageList
  Friend WithEvents TabControl1 As System.Windows.Forms.TabControl
  Friend WithEvents TabPage1 As System.Windows.Forms.TabPage
  Friend WithEvents TabPage2 As System.Windows.Forms.TabPage
  Friend WithEvents Panel1 As System.Windows.Forms.Panel
  Friend WithEvents Panel2 As System.Windows.Forms.Panel
  Friend WithEvents txtMessage As System.Windows.Forms.TextBox
  Friend WithEvents Label1 As System.Windows.Forms.Label
  Friend WithEvents txtTo As System.Windows.Forms.TextBox
  Friend WithEvents Label2 As System.Windows.Forms.Label
  Friend WithEvents lstLog As System.Windows.Forms.ListBox
  Friend WithEvents txtSubject As System.Windows.Forms.TextBox
  Friend WithEvents mnuProfile As System.Windows.Forms.MenuItem
  Friend WithEvents mnuExit As System.Windows.Forms.MenuItem
  <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
    Me.components = New System.ComponentModel.Container()
    Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(Form1))
    Me.MainMenu1 = New System.Windows.Forms.MainMenu()
    Me.MenuItem1 = New System.Windows.Forms.MenuItem()
    Me.mnuProfile = New System.Windows.Forms.MenuItem()
    Me.MenuItem3 = New System.Windows.Forms.MenuItem()
    Me.mnuExit = New System.Windows.Forms.MenuItem()
    Me.ToolBar1 = New System.Windows.Forms.ToolBar()
    Me.ToolBarButton1 = New System.Windows.Forms.ToolBarButton()
    Me.ImageList1 = New System.Windows.Forms.ImageList(Me.components)
    Me.TabControl1 = New System.Windows.Forms.TabControl()
    Me.TabPage1 = New System.Windows.Forms.TabPage()
    Me.Panel2 = New System.Windows.Forms.Panel()
    Me.txtMessage = New System.Windows.Forms.TextBox()
    Me.Panel1 = New System.Windows.Forms.Panel()
    Me.txtSubject = New System.Windows.Forms.TextBox()
    Me.Label2 = New System.Windows.Forms.Label()
    Me.txtTo = New System.Windows.Forms.TextBox()
    Me.Label1 = New System.Windows.Forms.Label()
    Me.TabPage2 = New System.Windows.Forms.TabPage()
    Me.lstLog = New System.Windows.Forms.ListBox()
    Me.TabControl1.SuspendLayout()
    Me.TabPage1.SuspendLayout()
    Me.Panel2.SuspendLayout()
    Me.Panel1.SuspendLayout()
    Me.TabPage2.SuspendLayout()
    Me.SuspendLayout()
    '
    'MainMenu1
    '
    Me.MainMenu1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.MenuItem1})
    '
    'MenuItem1
    '
    Me.MenuItem1.Index = 0
    Me.MenuItem1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuProfile, Me.MenuItem3, Me.mnuExit})
    Me.MenuItem1.Text = "&File"
    '
    'mnuProfile
    '
    Me.mnuProfile.Index = 0
    Me.mnuProfile.Text = "&Profile"
    '
    'MenuItem3
    '
    Me.MenuItem3.Index = 1
    Me.MenuItem3.Text = "-"
    '
    'mnuExit
    '
    Me.mnuExit.Index = 2
    Me.mnuExit.Text = "E&xit"
    '
    'ToolBar1
    '
    Me.ToolBar1.AllowDrop = True
    Me.ToolBar1.Buttons.AddRange(New System.Windows.Forms.ToolBarButton() {Me.ToolBarButton1})
    Me.ToolBar1.ButtonSize = New System.Drawing.Size(35, 35)
    Me.ToolBar1.DropDownArrows = True
    Me.ToolBar1.Name = "ToolBar1"
    Me.ToolBar1.ShowToolTips = True
    Me.ToolBar1.Size = New System.Drawing.Size(310, 38)
    Me.ToolBar1.TabIndex = 0
    '
    'ToolBarButton1
    '
    Me.ToolBarButton1.ImageIndex = 0
    Me.ToolBarButton1.Text = "Send"
    '
    'TabControl1
    '
    Me.TabControl1.Controls.AddRange(New System.Windows.Forms.Control() {Me.TabPage1, Me.TabPage2})
    Me.TabControl1.Dock = System.Windows.Forms.DockStyle.Fill
    Me.TabControl1.Location = New System.Drawing.Point(0, 38)
    Me.TabControl1.Name = "TabControl1"
    Me.TabControl1.SelectedIndex = 0
    Me.TabControl1.Size = New System.Drawing.Size(310, 321)
    Me.TabControl1.TabIndex = 1
    '
    'TabPage1
    '
    Me.TabPage1.Controls.AddRange(New System.Windows.Forms.Control() {Me.Panel2, Me.Panel1})
    Me.TabPage1.Location = New System.Drawing.Point(4, 21)
    Me.TabPage1.Name = "TabPage1"
    Me.TabPage1.Size = New System.Drawing.Size(302, 296)
    Me.TabPage1.TabIndex = 0
    Me.TabPage1.Text = "SMTP"
    '
    'Panel2
    '
    Me.Panel2.Controls.AddRange(New System.Windows.Forms.Control() {Me.txtMessage})
    Me.Panel2.Dock = System.Windows.Forms.DockStyle.Fill
    Me.Panel2.DockPadding.All = 2
    Me.Panel2.Location = New System.Drawing.Point(0, 55)
    Me.Panel2.Name = "Panel2"
    Me.Panel2.Size = New System.Drawing.Size(302, 241)
    Me.Panel2.TabIndex = 1
    '
    'txtMessage
    '
    Me.txtMessage.Dock = System.Windows.Forms.DockStyle.Fill
    Me.txtMessage.Location = New System.Drawing.Point(2, 2)
    Me.txtMessage.Multiline = True
    Me.txtMessage.Name = "txtMessage"
    Me.txtMessage.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
    Me.txtMessage.Size = New System.Drawing.Size(298, 237)
    Me.txtMessage.TabIndex = 2
    Me.txtMessage.Text = ""
    '
    'Panel1
    '
    Me.Panel1.Controls.AddRange(New System.Windows.Forms.Control() {Me.txtSubject, Me.Label2, Me.txtTo, Me.Label1})
    Me.Panel1.Dock = System.Windows.Forms.DockStyle.Top
    Me.Panel1.Name = "Panel1"
    Me.Panel1.Size = New System.Drawing.Size(302, 55)
    Me.Panel1.TabIndex = 0
    '
    'txtSubject
    '
    Me.txtSubject.Location = New System.Drawing.Point(60, 30)
    Me.txtSubject.Name = "txtSubject"
    Me.txtSubject.Size = New System.Drawing.Size(236, 22)
    Me.txtSubject.TabIndex = 1
    Me.txtSubject.Text = ""
    '
    'Label2
    '
    Me.Label2.Location = New System.Drawing.Point(10, 35)
    Me.Label2.Name = "Label2"
    Me.Label2.Size = New System.Drawing.Size(45, 15)
    Me.Label2.TabIndex = 2
    Me.Label2.Text = "Subject:"
    '
    'txtTo
    '
    Me.txtTo.Location = New System.Drawing.Point(60, 5)
    Me.txtTo.Name = "txtTo"
    Me.txtTo.Size = New System.Drawing.Size(236, 22)
    Me.txtTo.TabIndex = 0
    Me.txtTo.Text = ""
    '
    'Label1
    '
    Me.Label1.Location = New System.Drawing.Point(10, 10)
    Me.Label1.Name = "Label1"
    Me.Label1.Size = New System.Drawing.Size(45, 15)
    Me.Label1.TabIndex = 0
    Me.Label1.Text = "To:"
    '
    'TabPage2
    '
    Me.TabPage2.Controls.AddRange(New System.Windows.Forms.Control() {Me.lstLog})
    Me.TabPage2.Location = New System.Drawing.Point(4, 21)
    Me.TabPage2.Name = "TabPage2"
    Me.TabPage2.Size = New System.Drawing.Size(302, 296)
    Me.TabPage2.TabIndex = 1
    Me.TabPage2.Text = "Transaction"
    '
    'lstLog
    '
    Me.lstLog.Dock = System.Windows.Forms.DockStyle.Fill
    Me.lstLog.HorizontalScrollbar = True
    Me.lstLog.ItemHeight = 12
    Me.lstLog.Name = "lstLog"
    Me.lstLog.Size = New System.Drawing.Size(302, 292)
    Me.lstLog.TabIndex = 0
    '
    'Form1
    '
    Me.AutoScaleBaseSize = New System.Drawing.Size(5, 15)
    Me.ClientSize = New System.Drawing.Size(310, 359)
    Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.TabControl1, Me.ToolBar1})
    Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
    Me.MaximizeBox = False
    Me.Menu = Me.MainMenu1
    Me.Name = "Form1"
    Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
    Me.Text = "SMTP"
    Me.TabControl1.ResumeLayout(False)
    Me.TabPage1.ResumeLayout(False)
    Me.Panel2.ResumeLayout(False)
    Me.Panel1.ResumeLayout(False)
    Me.TabPage2.ResumeLayout(False)
    Me.ResumeLayout(False)

  End Sub

  Private SetupForm As New Form2()
  Private smtpSocket As New System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)

  Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick
    Dim IPAdd As System.Net.IPAddress
    Dim IPEndAdd As System.Net.IPEndPoint
    Dim IpHost As New System.Net.IPHostEntry()
    Dim strHost, strPort, strUser, strName, strFrom, strTo, strSubject, strMsg As String
    Dim msg As String

    strHost = SetupForm.txtHost.Text
    strPort = SetupForm.txtPort.Text
    strFrom = SetupForm.txtAddress.Text
    strTo = txtTo.Text
    strSubject = txtSubject.Text
    strMsg = txtMessage.Text

    lstLog.Items.Clear()

    Try
      ' Connect to SMTP server
      lstLog.Items.Add("C: Trying to connect to host " & strHost & ", port: " & strPort)

      IpHost = System.Net.Dns.Resolve(strHost)
      IPAdd = IpHost.AddressList(0)
      IPEndAdd = New System.Net.IPEndPoint(IPAdd.Address, Int32.Parse(strPort))

      smtpSocket.Connect(IPEndAdd)

      If Not smtpSocket.Connected Then
        lstLog.Items.Add("Unable to connect to " & strHost & ":" & strPort)
      End If

      If Not SMTPResponse("220") Then
        Return
      End If
    Catch ex As Exception
      lstLog.Items.Add("Socket: " & ex.ToString())
    End Try

    Try
      msg = "HELO " & strHost & ControlChars.CrLf
      If Not SMTPSend(msg) Then
        Return
      End If
      If Not SMTPResponse("250") Then
        Return
      End If

      msg = "MAIL FROM: " & strFrom.Trim & ControlChars.CrLf
      If Not SMTPSend(msg) Then
        Return
      End If
      If Not SMTPResponse("250") Then
        Return
      End If

      Dim i As Short
      Dim tString As String
      Dim strArray() As String

      strArray = Split(strTo.Trim, ",")

      For i = 0 To UBound(strArray)
        If strArray(i).Trim().ToString <> "" Then
          msg = "RCPT TO: " & strArray(i).Trim().ToString & ControlChars.CrLf
          If Not SMTPSend(msg) Then
            Return
          End If
          If Not SMTPResponse("250") Then
            Return
          End If
        End If
      Next

      msg = "DATA" & ControlChars.CrLf
      If Not SMTPSend(msg) Then
        Return
      End If
      If Not SMTPResponse("354") Then
        Return
      End If

      Dim strDate As String = DateTime.Now.ToShortDateString() & " " & DateTime.Now.ToLongTimeString()
      msg = "Date: " & strDate & ControlChars.CrLf
      If Not SMTPSend(msg) Then
        Return
      End If

      msg = "From: " & strFrom.Trim() & ControlChars.CrLf
      If Not SMTPSend(msg) Then
        Return
      End If

      msg = "To: " & strTo.Trim & ControlChars.CrLf
      If Not SMTPSend(msg) Then
        Return
      End If

      msg = "Subject: " & strSubject.ToString & ControlChars.CrLf & ControlChars.CrLf
      If Not SMTPSend(msg) Then
        Return
      End If

      msg = strMsg.ToString & ControlChars.CrLf
      If Not SMTPSend(msg) Then
        Return
      End If

      msg = ControlChars.CrLf & "." & ControlChars.CrLf
      If Not SMTPSend(msg) Then
        Return
      End If
      If Not SMTPResponse("250") Then
        Return
      End If

      msg = "QUIT" & ControlChars.CrLf
      If Not SMTPSend(msg) Then
        Return
      End If
      If Not SMTPResponse("221") Then
        Return
      End If

      smtpSocket.Shutdown(SocketShutdown.Both)
      smtpSocket.Close()
    Catch ex As Exception
      lstLog.Items.Add(ex.ToString())
    End Try
  End Sub

  Private Sub mnuProfile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuProfile.Click
    SetupForm.ShowDialog()
  End Sub

  Private Sub mnuExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuExit.Click
    End
  End Sub

  Private Function SMTPSend(ByVal strMsg As String) As Boolean
    Dim byteMsg() As Byte

    Try
      lstLog.Items.Add("C: " & strMsg.ToString())
      byteMsg = Encoding.ASCII.GetBytes(strMsg.ToCharArray())
      smtpSocket.Send(byteMsg, byteMsg.Length, SocketFlags.None)

      Return True
    Catch ex As Exception
      lstLog.Items.Add("SMTPSend Error: " & ex.ToString())

      smtpSocket.Shutdown(SocketShutdown.Both)
      smtpSocket.Close()
      Return False
    End Try
  End Function

  Private Function SMTPResponse(ByVal strEcho As String) As Boolean
    Dim RecvBytes(256) As Byte
    Dim strResponse As String = Nothing
    Dim bytes As Int32

    Try
      bytes = smtpSocket.Receive(RecvBytes, RecvBytes.Length, 0)
      strResponse = Encoding.ASCII.GetString(RecvBytes, 0, bytes)
      lstLog.Items.Add("S: " & strResponse.ToString())

      If Not strResponse.StartsWith(strEcho) Then
        lstLog.Items.Add("SMTPResponse Error.")
        smtpSocket.Shutdown(SocketShutdown.Both)
        smtpSocket.Close()
        Return False
      Else
        Return True
      End If
    Catch ex As Exception
      lstLog.Items.Add("SMTPResponse Error: " & ex.ToString())
      smtpSocket.Shutdown(SocketShutdown.Both)
      smtpSocket.Close()
      Return False
    End Try
  End Function
End Class
Module Module1
  Public sHost As String
  Public sPort As String
  Public sUser As String
  Public sAddress As String
  Public sName As String
  Public sTo As String
  Public sSubject As String
  Public sMsg As String
End Module
Public Class Form2
    Inherits System.Windows.Forms.Form

    Public Sub New()
        MyBase.New()

        InitializeComponent()

    End Sub

    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    Private components As System.ComponentModel.IContainer

  Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox
  Friend WithEvents Label1 As System.Windows.Forms.Label
  Friend WithEvents Label2 As System.Windows.Forms.Label
  Friend WithEvents Label3 As System.Windows.Forms.Label
  Friend WithEvents txtHost As System.Windows.Forms.TextBox
  Friend WithEvents txtPort As System.Windows.Forms.TextBox
  Friend WithEvents txtUser As System.Windows.Forms.TextBox
  Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox
  Friend WithEvents txtAddress As System.Windows.Forms.TextBox
  Friend WithEvents txtName As System.Windows.Forms.TextBox
  Friend WithEvents Label5 As System.Windows.Forms.Label
  Friend WithEvents Label6 As System.Windows.Forms.Label
  Friend WithEvents btnOK As System.Windows.Forms.Button
  Friend WithEvents btnCancel As System.Windows.Forms.Button
  <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
    Me.GroupBox1 = New System.Windows.Forms.GroupBox()
    Me.txtUser = New System.Windows.Forms.TextBox()
    Me.txtPort = New System.Windows.Forms.TextBox()
    Me.txtHost = New System.Windows.Forms.TextBox()
    Me.Label3 = New System.Windows.Forms.Label()
    Me.Label1 = New System.Windows.Forms.Label()
    Me.Label2 = New System.Windows.Forms.Label()
    Me.GroupBox2 = New System.Windows.Forms.GroupBox()
    Me.txtAddress = New System.Windows.Forms.TextBox()
    Me.txtName = New System.Windows.Forms.TextBox()
    Me.Label5 = New System.Windows.Forms.Label()
    Me.Label6 = New System.Windows.Forms.Label()
    Me.btnOK = New System.Windows.Forms.Button()
    Me.btnCancel = New System.Windows.Forms.Button()
    Me.GroupBox1.SuspendLayout()
    Me.GroupBox2.SuspendLayout()
    Me.SuspendLayout()
    '
    'GroupBox1
    '
    Me.GroupBox1.Controls.AddRange(New System.Windows.Forms.Control() {Me.txtUser, Me.txtPort, Me.txtHost, Me.Label3, Me.Label1, Me.Label2})
    Me.GroupBox1.Location = New System.Drawing.Point(3, 5)
    Me.GroupBox1.Name = "GroupBox1"
    Me.GroupBox1.Size = New System.Drawing.Size(240, 100)
    Me.GroupBox1.TabIndex = 0
    Me.GroupBox1.TabStop = False
    Me.GroupBox1.Text = "SMTP Server"
    '
    'txtUser
    '
    Me.txtUser.Location = New System.Drawing.Point(70, 70)
    Me.txtUser.Name = "txtUser"
    Me.txtUser.Size = New System.Drawing.Size(160, 22)
    Me.txtUser.TabIndex = 2
    Me.txtUser.Text = ""
    '
    'txtPort
    '
    Me.txtPort.Location = New System.Drawing.Point(70, 45)
    Me.txtPort.Name = "txtPort"
    Me.txtPort.Size = New System.Drawing.Size(160, 22)
    Me.txtPort.TabIndex = 1
    Me.txtPort.Text = "25"
    '
    'txtHost
    '
    Me.txtHost.Location = New System.Drawing.Point(70, 20)
    Me.txtHost.Name = "txtHost"
    Me.txtHost.Size = New System.Drawing.Size(160, 22)
    Me.txtHost.TabIndex = 0
    Me.txtHost.Text = ""
    '
    'Label3
    '
    Me.Label3.Location = New System.Drawing.Point(10, 75)
    Me.Label3.Name = "Label3"
    Me.Label3.Size = New System.Drawing.Size(70, 15)
    Me.Label3.TabIndex = 2
    Me.Label3.Text = "User Name:"
    '
    'Label1
    '
    Me.Label1.Location = New System.Drawing.Point(10, 25)
    Me.Label1.Name = "Label1"
    Me.Label1.Size = New System.Drawing.Size(70, 15)
    Me.Label1.TabIndex = 0
    Me.Label1.Text = "Host:"
    '
    'Label2
    '
    Me.Label2.Location = New System.Drawing.Point(10, 50)
    Me.Label2.Name = "Label2"
    Me.Label2.Size = New System.Drawing.Size(70, 15)
    Me.Label2.TabIndex = 1
    Me.Label2.Text = "Port:"
    '
    'GroupBox2
    '
    Me.GroupBox2.Controls.AddRange(New System.Windows.Forms.Control() {Me.txtAddress, Me.txtName, Me.Label5, Me.Label6})
    Me.GroupBox2.Location = New System.Drawing.Point(3, 110)
    Me.GroupBox2.Name = "GroupBox2"
    Me.GroupBox2.Size = New System.Drawing.Size(240, 75)
    Me.GroupBox2.TabIndex = 1
    Me.GroupBox2.TabStop = False
    Me.GroupBox2.Text = "User Information"
    '
    'txtAddress
    '
    Me.txtAddress.Location = New System.Drawing.Point(70, 45)
    Me.txtAddress.Name = "txtAddress"
    Me.txtAddress.Size = New System.Drawing.Size(160, 22)
    Me.txtAddress.TabIndex = 4
    Me.txtAddress.Text = ""
    '
    'txtName
    '
    Me.txtName.Location = New System.Drawing.Point(70, 20)
    Me.txtName.Name = "txtName"
    Me.txtName.Size = New System.Drawing.Size(160, 22)
    Me.txtName.TabIndex = 3
    Me.txtName.Text = ""
    '
    'Label5
    '
    Me.Label5.Location = New System.Drawing.Point(10, 25)
    Me.Label5.Name = "Label5"
    Me.Label5.Size = New System.Drawing.Size(70, 15)
    Me.Label5.TabIndex = 0
    Me.Label5.Text = "Name:"
    '
    'Label6
    '
    Me.Label6.Location = New System.Drawing.Point(10, 50)
    Me.Label6.Name = "Label6"
    Me.Label6.Size = New System.Drawing.Size(70, 15)
    Me.Label6.TabIndex = 1
    Me.Label6.Text = "Address:"
    '
    'btnOK
    '
    Me.btnOK.Location = New System.Drawing.Point(28, 195)
    Me.btnOK.Name = "btnOK"
    Me.btnOK.Size = New System.Drawing.Size(85, 25)
    Me.btnOK.TabIndex = 2
    Me.btnOK.Text = "OK"
    '
    'btnCancel
    '
    Me.btnCancel.Location = New System.Drawing.Point(133, 195)
    Me.btnCancel.Name = "btnCancel"
    Me.btnCancel.Size = New System.Drawing.Size(85, 25)
    Me.btnCancel.TabIndex = 3
    Me.btnCancel.Text = "Cancel"
    '
    'Form2
    '
    Me.AutoScaleBaseSize = New System.Drawing.Size(5, 15)
    Me.ClientSize = New System.Drawing.Size(247, 228)
    Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.btnCancel, Me.btnOK, Me.GroupBox2, Me.GroupBox1})
    Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
    Me.MaximizeBox = False
    Me.Name = "Form2"
    Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
    Me.Text = "SMTP Profile"
    Me.GroupBox1.ResumeLayout(False)
    Me.GroupBox2.ResumeLayout(False)
    Me.ResumeLayout(False)

  End Sub



  Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    txtHost.Text = sHost
    txtPort.Text = sPort
    txtUser.Text = sUser
    txtAddress.Text = sAddress
    txtName.Text = sName
  End Sub

  Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
    If txtHost.Text = "" Or txtPort.Text = "" Or txtUser.Text = "" Or txtAddress.Text = "" Or txtName.Text = "" Then
      MessageBox.Show("Please enter the information.", "SMTP", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1)
    Else
      sHost = txtHost.Text
      sPort = txtPort.Text
      sUser = txtUser.Text
      sAddress = txtAddress.Text
      sName = txtName.Text
      Me.Close()
    End If
  End Sub

  Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
    Me.Close()
  End Sub
End Class








22.23.Smtp Email
22.23.1.Send Email by SmtpMail
22.23.2.Socket based SMTP clientSocket based SMTP client
22.23.3.SMTP based on TcpClientSMTP based on TcpClient
22.23.4.Pop3 Email ClientPop3 Email Client