Pop3 Email Client : Smtp Email « Socket Network « VB.Net Tutorial

Home
VB.Net Tutorial
1.Language Basics
2.Data Type
3.Operator
4.Statements
5.Date Time
6.Class Module
7.Development
8.Collections
9.Generics
10.Attributes
11.Event
12.LINQ
13.Stream File
14.GUI
15.GUI Applications
16.Windows Presentation Foundation
17.2D Graphics
18.I18N Internationlization
19.Reflection
20.Regular Expressions
21.Security
22.Socket Network
23.Thread
24.Windows
25.XML
26.Database ADO.net
27.Design Patterns
VB.Net
VB.Net by API
VB.Net Tutorial » Socket Network » Smtp Email 
22.23.4.Pop3 Email Client
Pop3 Email Client
' Quote from Book
' Visual Basic.net Programming
' Publisher Water Publisher
' China, Beijing


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

Imports System.Windows.Forms

public class Pop3Receive
   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()
    End Sub

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

    Private components As System.ComponentModel.IContainer

    Friend WithEvents txtMailContent As System.Windows.Forms.TextBox
    Friend WithEvents btnMailReceive As System.Windows.Forms.Button
    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 Label4 As System.Windows.Forms.Label
    Friend WithEvents txtID As System.Windows.Forms.TextBox
    Friend WithEvents txtPassWord As System.Windows.Forms.TextBox
    Friend WithEvents txtServer As System.Windows.Forms.TextBox
    Friend WithEvents txtPort As System.Windows.Forms.TextBox
    Friend WithEvents lstMailList As System.Windows.Forms.ListBox
    Friend WithEvents Label5 As System.Windows.Forms.Label
    Friend WithEvents txtNumber As System.Windows.Forms.TextBox
    Friend WithEvents Label6 As System.Windows.Forms.Label
    Friend WithEvents txtSize As System.Windows.Forms.TextBox
    Friend WithEvents btnDelete As System.Windows.Forms.Button
    Friend WithEvents btnQUIT As System.Windows.Forms.Button
    <System.Diagnostics.DebuggerStepThrough()Private Sub InitializeComponent()
        Me.lstMailList = New System.Windows.Forms.ListBox()
        Me.txtMailContent = New System.Windows.Forms.TextBox()
        Me.txtID = New System.Windows.Forms.TextBox()
        Me.txtServer = New System.Windows.Forms.TextBox()
        Me.txtPort = New System.Windows.Forms.TextBox()
        Me.txtPassWord = New System.Windows.Forms.TextBox()
        Me.btnMailReceive = New System.Windows.Forms.Button()
        Me.Label1 = New System.Windows.Forms.Label()
        Me.Label2 = New System.Windows.Forms.Label()
        Me.Label3 = New System.Windows.Forms.Label()
        Me.Label4 = New System.Windows.Forms.Label()
        Me.Label5 = New System.Windows.Forms.Label()
        Me.txtNumber = New System.Windows.Forms.TextBox()
        Me.txtSize = New System.Windows.Forms.TextBox()
        Me.Label6 = New System.Windows.Forms.Label()
        Me.btnDelete = New System.Windows.Forms.Button()
        Me.btnQUIT = New System.Windows.Forms.Button()
        Me.SuspendLayout()
        '
        'lstMailList
        '
        Me.lstMailList.ItemHeight = 12
        Me.lstMailList.Location = New System.Drawing.Point(2048)
        Me.lstMailList.Name = "lstMailList"
        Me.lstMailList.Size = New System.Drawing.Size(666112)
        Me.lstMailList.TabIndex = 8
        '
        'txtMailContent
        '
        Me.txtMailContent.Location = New System.Drawing.Point(20176)
        Me.txtMailContent.Multiline = True
        Me.txtMailContent.Name = "txtMailContent"
        Me.txtMailContent.ScrollBars = System.Windows.Forms.ScrollBars.Both
        Me.txtMailContent.Size = New System.Drawing.Size(666344)
        Me.txtMailContent.TabIndex = 9
        Me.txtMailContent.Text = ""
        '
        'txtID
        '
        Me.txtID.Location = New System.Drawing.Point(72740)
        Me.txtID.Name = "txtID"
        Me.txtID.Size = New System.Drawing.Size(16421)
        Me.txtID.TabIndex = 0
        Me.txtID.Text = ""
        '
        'txtServer
        '
        Me.txtServer.Location = New System.Drawing.Point(727200)
        Me.txtServer.Name = "txtServer"
        Me.txtServer.Size = New System.Drawing.Size(16421)
        Me.txtServer.TabIndex = 3
        Me.txtServer.Text = ""
        '
        'txtPort
        '
        Me.txtPort.Location = New System.Drawing.Point(727144)
        Me.txtPort.Name = "txtPort"
        Me.txtPort.Size = New System.Drawing.Size(16421)
        Me.txtPort.TabIndex = 2
        Me.txtPort.Text = "110"
        '
        'txtPassWord
        '
        Me.txtPassWord.Location = New System.Drawing.Point(72793)
        Me.txtPassWord.Name = "txtPassWord"
        Me.txtPassWord.PasswordChar = Microsoft.VisualBasic.ChrW(42)
        Me.txtPassWord.Size = New System.Drawing.Size(16421)
        Me.txtPassWord.TabIndex = 1
        Me.txtPassWord.Text = ""
        '
        'btnMailReceive
        '
        Me.btnMailReceive.Location = New System.Drawing.Point(727240)
        Me.btnMailReceive.Name = "btnMailReceive"
        Me.btnMailReceive.Size = New System.Drawing.Size(16424)
        Me.btnMailReceive.TabIndex = 6
        Me.btnMailReceive.Text = "Check Mail"
        '
        'Label1
        '
        Me.Label1.Location = New System.Drawing.Point(72716)
        Me.Label1.Name = "Label1"
        Me.Label1.Size = New System.Drawing.Size(14316)
        Me.Label1.TabIndex = 7
        Me.Label1.Text = "Account"
        '
        'Label2
        '
        Me.Label2.Location = New System.Drawing.Point(727176)
        Me.Label2.Name = "Label2"
        Me.Label2.Size = New System.Drawing.Size(14316)
        Me.Label2.TabIndex = 8
        Me.Label2.Text = "Server"
        '
        'Label3
        '
        Me.Label3.Location = New System.Drawing.Point(727128)
        Me.Label3.Name = "Label3"
        Me.Label3.Size = New System.Drawing.Size(14316)
        Me.Label3.TabIndex = 9
        Me.Label3.Text = "port"
        '
        'Label4
        '
        Me.Label4.Location = New System.Drawing.Point(72772)
        Me.Label4.Name = "Label4"
        Me.Label4.Size = New System.Drawing.Size(14316)
        Me.Label4.TabIndex = 10
        Me.Label4.Text = "Password"
        '
        'Label5
        '
        Me.Label5.Location = New System.Drawing.Point(730275)
        Me.Label5.Name = "Label5"
        Me.Label5.Size = New System.Drawing.Size(15313)
        Me.Label5.TabIndex = 11
        Me.Label5.Text = "Total"
        '
        'txtNumber
        '
        Me.txtNumber.Location = New System.Drawing.Point(730299)
        Me.txtNumber.Name = "txtNumber"
        Me.txtNumber.Size = New System.Drawing.Size(15321)
        Me.txtNumber.TabIndex = 4
        Me.txtNumber.Text = ""
        '
        'txtSize
        '
        Me.txtSize.Location = New System.Drawing.Point(731355)
        Me.txtSize.Name = "txtSize"
        Me.txtSize.Size = New System.Drawing.Size(15321)
        Me.txtSize.TabIndex = 5
        Me.txtSize.Text = ""
        '
        'Label6
        '
        Me.Label6.Location = New System.Drawing.Point(731331)
        Me.Label6.Name = "Label6"
        Me.Label6.Size = New System.Drawing.Size(15313)
        Me.Label6.TabIndex = 13
        Me.Label6.Text = "Size(k)"
        '
        'btnDelete
        '
        Me.btnDelete.Location = New System.Drawing.Point(4928)
        Me.btnDelete.Name = "btnDelete"
        Me.btnDelete.Size = New System.Drawing.Size(19424)
        Me.btnDelete.TabIndex = 7
        Me.btnDelete.Text = "Delete"
        '
        'btnQUIT
        '
        Me.btnQUIT.Location = New System.Drawing.Point(732395)
        Me.btnQUIT.Name = "btnQUIT"
        Me.btnQUIT.Size = New System.Drawing.Size(16424)
        Me.btnQUIT.TabIndex = 6
        Me.btnQUIT.Text = "Quit"
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(614)
        Me.ClientSize = New System.Drawing.Size(911533)
        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.btnQUIT, Me.btnDelete, Me.txtSize, Me.Label6, Me.txtNumber, Me.Label5, Me.Label4, Me.Label3, Me.Label2, Me.Label1, Me.btnMailReceive, Me.txtPassWord, Me.txtPort, Me.txtServer, Me.txtID, Me.txtMailContent, Me.lstMailList})
        Me.Name = "Form1"
        Me.Text = "Form1"
        Me.ResumeLayout(False)

    End Sub

    Dim myTcpClient As New TcpClient()
    Dim myNetworkStream As NetworkStream
    Dim blnDelete As Boolean = False

    Private Sub btnMailReceive_Click(ByVal sender As System.Object, ByVal e As System.EventArgsHandles btnMailReceive.Click

        Dim strMessage
        ConnectToMailServer()
        Dim As New Thread(AddressOf GetMailNumber)
        t.Start()
    End Sub

    Public Sub ConnectToMailServer()
        Try
            Dim strReturnMessage As String

            myTcpClient.Connect(txtServer.Text, Integer.Parse(txtPort.Text))
            myNetworkStream = myTcpClient.GetStream()
            Dim myStreamReader As New StreamReader(myNetworkStream)

            strReturnMessage = myStreamReader.ReadLine() + vbCrLf
            strReturnMessage += SendCommand(myNetworkStream, "USER " + txtID.Text+ vbCrLf
            strReturnMessage += SendCommand(myNetworkStream, "PASS " + txtPassWord.Text+ vbCrLf
            MessageBox.Show(strReturnMessage)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub GetMailNumber()
        Dim strMessage(2As String
        Dim strMessageLine As String

        strMessageLine = SendCommand(myNetworkStream, "STAT")
        strMessage = strMessageLine.Split(" ")

        txtNumber.Text = strMessage(1)
        txtSize.Text = (Long.Parse(strMessage(2)) 1000).ToString
        GetMailList(Long.Parse(strMessage(1)))

    End Sub

    Private Sub GetMailList(ByVal lngNumber As Long)
        Dim strReturnMessage As String
        Dim lngLoop As Long
        Dim lngIndex As Long
        Try
            For lngLoop = To lngNumber - 1
                lngIndex = lngLoop + 1
                strReturnMessage = "[" + lngIndex.ToString + "]" + SendCommand(myNetworkStream, "LIST " + lngIndex.ToString)

                lstMailList.Items.Add(strReturnMessage)
            Next
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Function SendCommand(ByRef pNetStream As NetworkStream, ByVal pstrCommand As StringAs String
        Try
            Dim strCommand = pstrCommand + vbCrLf
            Dim bteCommand() As Byte = Encoding.ASCII.GetBytes(strCommand)

            Dim myStreamReader As StreamReader
            Dim sstrLine As String
            Dim strLine As String

            pNetStream.Write(bteCommand, 0, bteCommand.Length)
            myStreamReader = New StreamReader(pNetStream)
            strLine = myStreamReader.ReadLine()
            Return strLine

        Catch ex As Exception
            Return ex.Message
        End Try
    End Function

    Private Sub lstMailList_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgsHandles lstMailList.SelectedIndexChanged
        If blnDelete = False Then
            Dim As New Thread(AddressOf GetMessage)
            t.Start()
        End If
    End Sub

    Private Sub GetMessage()
        Dim strMessageContent As String = ""

        Dim intRead As Integer

        Dim strCommand = "RETR " (lstMailList.SelectedIndex + 1).ToString + vbCrLf
        Dim bteCommand() As Byte = Encoding.ASCII.GetBytes(strCommand)
        Dim myStreamReader As StreamReader


        txtMailContent.Text = ""
        Try
            myNetworkStream.Write(bteCommand, 0, bteCommand.Length)
            myStreamReader = New StreamReader(myNetworkStream)
            AnalyMessage(myStreamReader)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try


    End Sub

    Private Sub AnalyMessage(ByVal pStreamReader As StreamReader)
        Dim strReadLine As String = ""
        Dim sstrReadLine As String = ""

        Do While (sstrReadLine = Nothing Or sstrReadLine.Length = 0)
            sstrReadLine = pStreamReader.ReadLine
        Loop

        txtMailContent.Text += vbCrLf + "--- Header --" + vbCrLf

        Do While sstrReadLine.Trim.Length <> 0
            sstrReadLine = pStreamReader.ReadLine
            txtMailContent.Text += vbCrLf + sstrReadLine
        Loop

        txtMailContent.Text += vbCrLf + "--- Body --" + vbCrLf

        Do
            sstrReadLine = pStreamReader.ReadLine
            If sstrReadLine.Trim() "." Then Exit Do
            If sstrReadLine <> Nothing Then txtMailContent.Text += vbCrLf + sstrReadLine
        Loop

    End Sub

    Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgsHandles btnDelete.Click
        Dim strReturnMessage As String
        Dim intDelete As Integer
        intDelete = lstMailList.SelectedIndex + 1
        Try
            strReturnMessage = SendCommand(myNetworkStream, "DELE " + intDelete.ToString)
            txtMailContent.Text = strReturnMessage
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
        blnDelete = True
        lstMailList.Items.RemoveAt(intDelete - 1)
        blnDelete = False
    End Sub

    Private Sub btnQUIT_Click(ByVal sender As System.Object, ByVal e As System.EventArgsHandles btnQUIT.Click
        Dim strReturnMessage As String
        Try
            strReturnMessage = SendCommand(myNetworkStream, "QUIT")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try


    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgsHandles MyBase.Load

    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
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.