zoukankan      html  css  js  c++  java
  • 利用OpenPOP开源组件实现接收电子邮件功能

    网上关于接收电子邮件的代码很多,试用后,能满足要求的甚少。OpenPop(http://sourceforge.net/projects/hpop/)现在有了新的版本,且能经过VS2010编译,值得使用。可惜的是我现在对C#不熟悉,其demo经研究后转成VB.net实现。


    OpenPOP的test截图:




    我自己做的实例:



    以下是代码部分:


    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
    _
    Partial Class FetchEmail
    Inherits
    System.Windows.Forms.Form


    'Form 重写 Dispose,以清理组件列表。

    <System.Diagnostics.DebuggerNonUserCode()> _

    Protected Overrides Sub Dispose(ByVal disposing As
    Boolean)

    Try
    If
    disposing AndAlso components IsNot Nothing
    Then

    components.Dispose()

    End If

    Finally

    MyBase.Dispose(disposing)
    End
    Try
    End Sub


    'Windows 窗体设计器所必需的
    Private
    components As System.ComponentModel.IContainer


    '注意: 以下过程是 Windows 窗体设计器所必需的
    '可以使用
    Windows 窗体设计器修改它。
    '不要使用代码编辑器修改它。

    <System.Diagnostics.DebuggerStepThrough()> _
    Private
    Sub InitializeComponent()

    Me.Label1 = New
    System.Windows.Forms.Label()

    Me.txtPOP3Server = New
    System.Windows.Forms.TextBox()

    Me.btnFetchEmail = New
    System.Windows.Forms.Button()

    Me.txtPort = New
    System.Windows.Forms.TextBox()

    Me.Label2 = New
    System.Windows.Forms.Label()

    Me.txtName = New
    System.Windows.Forms.TextBox()

    Me.Label3 = New
    System.Windows.Forms.Label()

    Me.txtPassword = New
    System.Windows.Forms.TextBox()

    Me.Label4 = New
    System.Windows.Forms.Label()

    Me.txtEmailCount = New
    System.Windows.Forms.TextBox()

    Me.Label5 = New
    System.Windows.Forms.Label()

    Me.txtRead = New
    System.Windows.Forms.TextBox()

    Me.Label6 = New
    System.Windows.Forms.Label()

    Me.txtBody = New
    System.Windows.Forms.TextBox()

    Me.txtFrom = New
    System.Windows.Forms.TextBox()

    Me.Label7 = New
    System.Windows.Forms.Label()

    Me.Label8 = New
    System.Windows.Forms.Label()

    Me.Label9 = New
    System.Windows.Forms.Label()

    Me.txtSubject = New
    System.Windows.Forms.TextBox()

    Me.Label10 = New
    System.Windows.Forms.Label()

    Me.lstAttachments = New
    System.Windows.Forms.ListBox()

    Me.btnConnectLogin = New
    System.Windows.Forms.Button()

    Me.TableLayoutPanel1 = New
    System.Windows.Forms.TableLayoutPanel()

    Me.TableLayoutPanel1.SuspendLayout()

    Me.SuspendLayout()

    '

    'Label1

    '
    Me.Label1.AutoSize =
    True
    Me.Label1.Dock =
    System.Windows.Forms.DockStyle.Right

    Me.Label1.Location = New System.Drawing.Point(13,
    10)
    Me.Label1.Name =
    "Label1"
    Me.Label1.Size = New
    System.Drawing.Size(99, 35)

    Me.Label1.TabIndex = 0

    Me.Label1.Text = "POP3服务器:"

    '

    'txtPOP3Server

    '
    Me.txtPOP3Server.Dock =
    System.Windows.Forms.DockStyle.Fill

    Me.txtPOP3Server.Location = New System.Drawing.Point(118,
    13)
    Me.txtPOP3Server.Name =
    "txtPOP3Server"

    Me.txtPOP3Server.Size = New System.Drawing.Size(236,
    25)
    Me.txtPOP3Server.TabIndex =
    1
    Me.txtPOP3Server.Text =
    "pop.126.com"

    '

    'btnFetchEmail

    '
    Me.btnFetchEmail.Enabled =
    False
    Me.btnFetchEmail.Location =
    New System.Drawing.Point(708, 48)

    Me.btnFetchEmail.Name =
    "btnFetchEmail"

    Me.btnFetchEmail.Size = New System.Drawing.Size(162,
    27)
    Me.btnFetchEmail.TabIndex =
    2
    Me.btnFetchEmail.Text =
    "读取邮件"

    Me.btnFetchEmail.UseVisualStyleBackColor =
    True

    '

    'txtPort

    '
    Me.txtPort.Dock =
    System.Windows.Forms.DockStyle.Fill

    Me.txtPort.Location = New System.Drawing.Point(534,
    13)
    Me.txtPort.Name =
    "txtPort"
    Me.txtPort.Size = New
    System.Drawing.Size(168, 25)

    Me.txtPort.TabIndex = 4

    Me.txtPort.Text = "110"

    '

    'Label2

    '
    Me.Label2.AutoSize =
    True
    Me.Label2.Dock =
    System.Windows.Forms.DockStyle.Right

    Me.Label2.Location = New System.Drawing.Point(431,
    10)
    Me.Label2.Name =
    "Label2"
    Me.Label2.Size = New
    System.Drawing.Size(97, 35)

    Me.Label2.TabIndex = 3

    Me.Label2.Text = "服务器端口:"

    '

    'txtName

    '
    Me.txtName.Dock =
    System.Windows.Forms.DockStyle.Fill

    Me.txtName.Location = New System.Drawing.Point(118,
    48)
    Me.txtName.Name =
    "txtName"
    Me.txtName.Size = New
    System.Drawing.Size(236, 25)

    Me.txtName.TabIndex = 6

    Me.txtName.Text = "youremail"

    '

    'Label3

    '
    Me.Label3.AutoSize =
    True
    Me.Label3.Dock =
    System.Windows.Forms.DockStyle.Right

    Me.Label3.Location = New System.Drawing.Point(45,
    45)
    Me.Label3.Name =
    "Label3"
    Me.Label3.Size = New
    System.Drawing.Size(67, 33)

    Me.Label3.TabIndex = 5

    Me.Label3.Text = "用户名:"

    '

    'txtPassword

    '
    Me.txtPassword.Dock =
    System.Windows.Forms.DockStyle.Fill

    Me.txtPassword.Location = New System.Drawing.Point(534,
    48)
    Me.txtPassword.Name =
    "txtPassword"

    Me.txtPassword.PasswordChar =
    Global.Microsoft.VisualBasic.ChrW(9679)

    Me.txtPassword.Size = New System.Drawing.Size(168,
    25)
    Me.txtPassword.TabIndex =
    8
    Me.txtPassword.Text =
    "YourPassword"

    '

    'Label4

    '
    Me.Label4.AutoSize =
    True
    Me.Label4.Dock =
    System.Windows.Forms.DockStyle.Right

    Me.Label4.Location = New System.Drawing.Point(476,
    45)
    Me.Label4.Name =
    "Label4"
    Me.Label4.Size = New
    System.Drawing.Size(52, 33)

    Me.Label4.TabIndex = 7

    Me.Label4.Text = "密码:"

    '

    'txtEmailCount

    '
    Me.txtEmailCount.Dock =
    System.Windows.Forms.DockStyle.Fill

    Me.txtEmailCount.ForeColor =
    System.Drawing.Color.Red

    Me.txtEmailCount.Location = New System.Drawing.Point(118,
    81)
    Me.txtEmailCount.Name =
    "txtEmailCount"

    Me.txtEmailCount.ReadOnly = True

    Me.txtEmailCount.Size = New System.Drawing.Size(236,
    25)
    Me.txtEmailCount.TabIndex =
    10
    Me.txtEmailCount.Text =
    "0"

    '

    'Label5

    '
    Me.Label5.AutoSize =
    True
    Me.Label5.Dock =
    System.Windows.Forms.DockStyle.Right

    Me.Label5.Location = New System.Drawing.Point(30,
    78)
    Me.Label5.Name =
    "Label5"
    Me.Label5.Size = New
    System.Drawing.Size(82, 39)

    Me.Label5.TabIndex = 9

    Me.Label5.Text = "邮件总数:"

    '

    'txtRead

    '
    Me.txtRead.Dock =
    System.Windows.Forms.DockStyle.Fill

    Me.txtRead.Location = New System.Drawing.Point(534,
    81)
    Me.txtRead.Name =
    "txtRead"
    Me.txtRead.ReadOnly =
    True
    Me.txtRead.Size = New
    System.Drawing.Size(168, 25)

    Me.txtRead.TabIndex = 12

    Me.txtRead.Text = "0"

    '

    'Label6

    '
    Me.Label6.AutoSize =
    True
    Me.Label6.Dock =
    System.Windows.Forms.DockStyle.Right

    Me.Label6.Location = New System.Drawing.Point(401,
    78)
    Me.Label6.Name =
    "Label6"
    Me.Label6.Size = New
    System.Drawing.Size(127, 39)

    Me.Label6.TabIndex = 11

    Me.Label6.Text = "想读取的邮件号:"

    '

    'txtBody

    '

    Me.TableLayoutPanel1.SetColumnSpan(Me.txtBody,
    3)
    Me.txtBody.Dock =
    System.Windows.Forms.DockStyle.Fill

    Me.txtBody.Location = New System.Drawing.Point(118,
    189)
    Me.txtBody.Multiline =
    True
    Me.txtBody.Name =
    "txtBody"
    Me.txtBody.Size = New
    System.Drawing.Size(584, 309)

    Me.txtBody.TabIndex = 13

    '

    'txtFrom

    '

    Me.TableLayoutPanel1.SetColumnSpan(Me.txtFrom,
    3)
    Me.txtFrom.Dock =
    System.Windows.Forms.DockStyle.Fill

    Me.txtFrom.Location = New System.Drawing.Point(118,
    120)
    Me.txtFrom.Multiline =
    True
    Me.txtFrom.Name =
    "txtFrom"
    Me.txtFrom.Size = New
    System.Drawing.Size(584, 27)

    Me.txtFrom.TabIndex = 14

    '

    'Label7

    '
    Me.Label7.AutoSize =
    True
    Me.Label7.Dock =
    System.Windows.Forms.DockStyle.Right

    Me.Label7.Location = New System.Drawing.Point(45,
    117)
    Me.Label7.Name =
    "Label7"
    Me.Label7.Size = New
    System.Drawing.Size(67, 33)

    Me.Label7.TabIndex = 16

    Me.Label7.Text = "发件人:"

    '

    'Label8

    '
    Me.Label8.AutoSize =
    True
    Me.Label8.Dock =
    System.Windows.Forms.DockStyle.Right

    Me.Label8.Location = New System.Drawing.Point(30,
    186)
    Me.Label8.Name =
    "Label8"
    Me.Label8.Size = New
    System.Drawing.Size(82, 315)

    Me.Label8.TabIndex = 17

    Me.Label8.Text = "邮件内容:"

    '

    'Label9

    '
    Me.Label9.AutoSize =
    True
    Me.Label9.Location = New
    System.Drawing.Point(708, 78)

    Me.Label9.Name = "Label9"

    Me.Label9.Size = New System.Drawing.Size(128,
    30)
    Me.Label9.TabIndex =
    18
    Me.Label9.Text = "邮件附件:" &
    Global.Microsoft.VisualBasic.ChrW(13) &
    Global.Microsoft.VisualBasic.ChrW(10) &
    "(保存到当前目录)"

    '

    'txtSubject

    '

    Me.TableLayoutPanel1.SetColumnSpan(Me.txtSubject,
    3)
    Me.txtSubject.Dock =
    System.Windows.Forms.DockStyle.Fill

    Me.txtSubject.Location = New System.Drawing.Point(118,
    153)
    Me.txtSubject.Multiline =
    True
    Me.txtSubject.Name =
    "txtSubject"
    Me.txtSubject.Size =
    New System.Drawing.Size(584, 30)

    Me.txtSubject.TabIndex = 19

    '

    'Label10

    '
    Me.Label10.AutoSize =
    True
    Me.Label10.Dock =
    System.Windows.Forms.DockStyle.Right

    Me.Label10.Location = New System.Drawing.Point(60,
    150)
    Me.Label10.Name =
    "Label10"
    Me.Label10.Size = New
    System.Drawing.Size(52, 36)

    Me.Label10.TabIndex = 20

    Me.Label10.Text = "主题:"

    '

    'lstAttachments

    '
    Me.lstAttachments.Anchor =
    CType((((System.Windows.Forms.AnchorStyles.Top Or
    System.Windows.Forms.AnchorStyles.Bottom)
    _

    Or System.Windows.Forms.AnchorStyles.Left)
    _

    Or System.Windows.Forms.AnchorStyles.Right),
    System.Windows.Forms.AnchorStyles)

    Me.lstAttachments.FormattingEnabled =
    True
    Me.lstAttachments.ItemHeight
    = 15
    Me.lstAttachments.Location =
    New System.Drawing.Point(708, 120)

    Me.lstAttachments.Name =
    "lstAttachments"

    Me.TableLayoutPanel1.SetRowSpan(Me.lstAttachments,
    3)
    Me.lstAttachments.Size = New
    System.Drawing.Size(168, 378)

    Me.lstAttachments.TabIndex = 21

    '

    'btnConnectLogin

    '
    Me.btnConnectLogin.Location =
    New System.Drawing.Point(708, 13)

    Me.btnConnectLogin.Name =
    "btnConnectLogin"

    Me.btnConnectLogin.Size = New System.Drawing.Size(162,
    29)
    Me.btnConnectLogin.TabIndex =
    22
    Me.btnConnectLogin.Text =
    "连接并注册"

    Me.btnConnectLogin.UseVisualStyleBackColor =
    True

    '

    'TableLayoutPanel1

    '
    Me.TableLayoutPanel1.ColumnCount
    = 7

    Me.TableLayoutPanel1.ColumnStyles.Add(New
    System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute,
    10.0!))

    Me.TableLayoutPanel1.ColumnStyles.Add(New
    System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent,
    12.13031!))

    Me.TableLayoutPanel1.ColumnStyles.Add(New
    System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent,
    27.84196!))

    Me.TableLayoutPanel1.ColumnStyles.Add(New
    System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent,
    20.00924!))

    Me.TableLayoutPanel1.ColumnStyles.Add(New
    System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent,
    20.00924!))

    Me.TableLayoutPanel1.ColumnStyles.Add(New
    System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent,
    20.00924!))

    Me.TableLayoutPanel1.ColumnStyles.Add(New
    System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute,
    10.0!))

    Me.TableLayoutPanel1.Controls.Add(Me.txtPOP3Server, 2,
    1)

    Me.TableLayoutPanel1.Controls.Add(Me.btnFetchEmail, 5,
    2)

    Me.TableLayoutPanel1.Controls.Add(Me.lstAttachments, 5,
    4)

    Me.TableLayoutPanel1.Controls.Add(Me.btnConnectLogin, 5,
    1)

    Me.TableLayoutPanel1.Controls.Add(Me.Label1, 1,
    1)

    Me.TableLayoutPanel1.Controls.Add(Me.txtName, 2,
    2)

    Me.TableLayoutPanel1.Controls.Add(Me.Label10, 1,
    5)

    Me.TableLayoutPanel1.Controls.Add(Me.txtBody, 2,
    6)

    Me.TableLayoutPanel1.Controls.Add(Me.Label8, 1,
    6)

    Me.TableLayoutPanel1.Controls.Add(Me.Label3, 1,
    2)

    Me.TableLayoutPanel1.Controls.Add(Me.Label5, 1,
    3)

    Me.TableLayoutPanel1.Controls.Add(Me.txtEmailCount, 2,
    3)

    Me.TableLayoutPanel1.Controls.Add(Me.Label2, 3,
    1)

    Me.TableLayoutPanel1.Controls.Add(Me.txtFrom, 2,
    4)

    Me.TableLayoutPanel1.Controls.Add(Me.Label7, 1,
    4)

    Me.TableLayoutPanel1.Controls.Add(Me.txtPort, 4,
    1)

    Me.TableLayoutPanel1.Controls.Add(Me.Label4, 3,
    2)

    Me.TableLayoutPanel1.Controls.Add(Me.txtPassword, 4,
    2)

    Me.TableLayoutPanel1.Controls.Add(Me.txtRead, 4,
    3)

    Me.TableLayoutPanel1.Controls.Add(Me.Label6, 3,
    3)

    Me.TableLayoutPanel1.Controls.Add(Me.txtSubject, 2,
    5)

    Me.TableLayoutPanel1.Controls.Add(Me.Label9, 5,
    3)
    Me.TableLayoutPanel1.Dock =
    System.Windows.Forms.DockStyle.Fill

    Me.TableLayoutPanel1.Location = New System.Drawing.Point(0,
    0)
    Me.TableLayoutPanel1.Name =
    "TableLayoutPanel1"

    Me.TableLayoutPanel1.RowCount = 8

    Me.TableLayoutPanel1.RowStyles.Add(New
    System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute,
    10.0!))

    Me.TableLayoutPanel1.RowStyles.Add(New
    System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent,
    7.142858!))

    Me.TableLayoutPanel1.RowStyles.Add(New
    System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent,
    6.709957!))

    Me.TableLayoutPanel1.RowStyles.Add(New
    System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent,
    8.008658!))

    Me.TableLayoutPanel1.RowStyles.Add(New
    System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent,
    6.709957!))

    Me.TableLayoutPanel1.RowStyles.Add(New
    System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent,
    7.359307!))

    Me.TableLayoutPanel1.RowStyles.Add(New
    System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent,
    64.06927!))

    Me.TableLayoutPanel1.RowStyles.Add(New
    System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute,
    10.0!))
    Me.TableLayoutPanel1.Size
    = New System.Drawing.Size(892,
    512)
    Me.TableLayoutPanel1.TabIndex
    = 23

    '

    'FetchEmail

    '
    Me.AutoScaleDimensions = New
    System.Drawing.SizeF(8.0!, 15.0!)

    Me.AutoScaleMode =
    System.Windows.Forms.AutoScaleMode.Font

    Me.ClientSize = New System.Drawing.Size(892,
    512)

    Me.Controls.Add(Me.TableLayoutPanel1)

    Me.Name = "FetchEmail"

    Me.StartPosition =
    System.Windows.Forms.FormStartPosition.CenterScreen

    Me.Text = "接收电子邮件"

    Me.TableLayoutPanel1.ResumeLayout(False)

    Me.TableLayoutPanel1.PerformLayout()

    Me.ResumeLayout(False)


    End Sub
    Friend WithEvents Label1 As
    System.Windows.Forms.Label
    Friend WithEvents txtPOP3Server
    As System.Windows.Forms.TextBox
    Friend WithEvents
    btnFetchEmail As System.Windows.Forms.Button
    Friend
    WithEvents txtPort As System.Windows.Forms.TextBox
    Friend
    WithEvents Label2 As System.Windows.Forms.Label
    Friend
    WithEvents txtName As System.Windows.Forms.TextBox
    Friend
    WithEvents Label3 As System.Windows.Forms.Label
    Friend
    WithEvents txtPassword As System.Windows.Forms.TextBox

    Friend WithEvents Label4 As System.Windows.Forms.Label

    Friend WithEvents txtEmailCount As
    System.Windows.Forms.TextBox
    Friend WithEvents Label5 As
    System.Windows.Forms.Label
    Friend WithEvents txtRead As
    System.Windows.Forms.TextBox
    Friend WithEvents Label6 As
    System.Windows.Forms.Label
    Friend WithEvents txtBody As
    System.Windows.Forms.TextBox
    Friend WithEvents txtFrom As
    System.Windows.Forms.TextBox
    Friend WithEvents Label7 As
    System.Windows.Forms.Label
    Friend WithEvents Label8 As
    System.Windows.Forms.Label
    Friend WithEvents Label9 As
    System.Windows.Forms.Label
    Friend WithEvents txtSubject As
    System.Windows.Forms.TextBox
    Friend WithEvents Label10 As
    System.Windows.Forms.Label
    Friend WithEvents
    lstAttachments As System.Windows.Forms.ListBox
    Friend
    WithEvents btnConnectLogin As System.Windows.Forms.Button

    Friend WithEvents TableLayoutPanel1 As
    System.Windows.Forms.TableLayoutPanel
    End Class



    '


    Imports OpenPop.Common
    Imports OpenPop.Mime
    Imports
    OpenPop.Pop3
    Imports System.IO
    Imports
    System.Collections.Generic
    Imports System.Net.Security
    Imports
    System.Security.Cryptography.X509Certificates


    Public Class FetchEmail
    'pop服务器

    Private Property pop3Server As
    String

    Get
    Return
    Me.txtPOP3Server.Text
    End
    Get
    Set(ByVal value As
    String)

    Me.txtPOP3Server.Text = value
    End
    Set
    End Property


    ' 服务器端口
    Private Property pop3port As
    String

    Get
    Return
    Me.txtPort.Text
    End
    Get
    Set(ByVal value As
    String)

    Me.txtPort.Text = value
    End
    Set
    End Property

    '注册用户名
    Private Property LoginName As
    String

    Get
    Return
    Me.txtName.Text
    End
    Get
    Set(ByVal value As
    String)

    Me.txtName.Text = value
    End
    Set
    End Property

    '密码
    Private Property LoginPassword As
    String

    Get
    Return
    Me.txtPassword.Text
    End
    Get
    Set(ByVal value As
    String)

    Me.txtPassword.Text = value
    End
    Set
    End Property

    '要读取的邮件号
    Private Property messageNumber As
    Integer
    Get


    Return
    CInt(Me.txtRead.Text)
    End
    Get
    Set(ByVal value As
    Integer)

    If value > CInt(Me.txtEmailCount.Text)
    Then

    value =
    CInt(Me.txtEmailCount.Text)

    End If
    If
    value < 0
    Then

    value = 0

    End If

    Me.txtRead.Text = CStr(value)
    End
    Set
    End Property

    ''全部邮件数
    'Dim emailCount As Integer =
    0
    '是否使用SSL
    Dim useSsl As Boolean =
    False
    '声明pop3client变量
    Dim client As
    Pop3Client


    '读取指定邮件
    Private Sub
    btnFetchEmail_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Handles btnFetchEmail.Click



    '设置光标
    Me.Cursor =
    Cursors.WaitCursor


    'We want to check the headers of
    the message before we download
    '
    邮件头信息,
    Dim headers As
    Header.MessageHeader

    Try

    headers =
    client.GetMessageHeaders(messageNumber)

    Catch

    MsgBox("未找到该邮件")

    '按钮恢复

    headers =
    Nothing

    SetButtonEnabled(False,
    0)

    '退出过程

    exitBtnSub()

    Exit Sub
    End
    Try
    Dim from As
    Header.RfcMailAddress =
    headers.From
    Dim subject As String
    = headers.Subject
    Me.txtFrom.Text
    = from.Address
    Me.txtSubject.Text
    = subject



    '下载整个邮件
    Dim emailMessage As
    Message =
    client.GetMessage(messageNumber)

    '定义messagepart变量
    Dim
    emailMessagePart As MessagePart


    emailMessagePart =
    emailMessage.FindFirstPlainTextVersion

    '如果邮件内容是文本格式
    If Not
    IsNothing(emailMessagePart)
    Then

    '显示文本内容

    Me.txtBody.Text =
    emailMessagePart.GetBodyAsText

    Else

    '尝试其他文本格式显示

    Dim lstMessagepart As List(Of MessagePart) '定义一个泛型
    list

    lstMessagepart =
    emailMessage.FindAllTextVersions

    If lstMessagepart.Count >= 1
    Then

    Me.txtBody.Text =
    lstMessagepart(0).GetBodyAsText

    Else

    Me.txtBody.Text =
    "不能显示"
    End
    If


    End If



    ''保存附件
    'For Each attachment As
    MessagePart In
    emailMessage.FindAllAttachments

    '
    'if(attachment.FileName.Equals("useful.pdf"))

    ' File.WriteAllBytes(attachment.FileName,
    attachment.Body)
    'Next


    '查找附件



    '创建附件列表,首先定义一个包含meaagepart类型的list泛型

    Dim EmailAttachments As List(Of
    MessagePart)

    '
    EmailAttachments =
    emailMessage.FindAllAttachments

    '逐个查找
    Dim i As Integer =
    0
    For Each AttachmentOfEmail As
    MessagePart In
    EmailAttachments

    '将文件名添加到列表

    Me.lstAttachments.Items.Add(AttachmentOfEmail.FileName)

    '
    If Not
    IsNothing(AttachmentOfEmail)
    Then

    '因为要存在当前目录,所以查看当前目录下是否存在该文件

    Dim WillSaveFile As New FileInfo(AttachmentOfEmail.FileName)



    If WillSaveFile.Exists
    Then

    '删除

    WillSaveFile.Delete()



    End
    If

    Try

    '保存

    AttachmentOfEmail.SaveToFile(WillSaveFile)

    Catch ex As Exception



    End Try

    End If

    Next

    '按钮恢复
    SetButtonEnabled(False,
    0)

    '退出过程
    exitBtnSub()


    Me.Cursor = Cursors.Default


    End Sub


    '中断连接
    Private Sub exitBtnSub()


    client = Nothing


    End Sub


    '连接并注册
    Private Sub
    btnConnectLogin_Click(ByVal sender As System.Object, ByVal e As
    System.EventArgs) Handles
    btnConnectLogin.Click

    '建立一个新的对象
    client = New
    Pop3Client
    Try



    '连接到服务器

    client.Connect(pop3Server, pop3port,
    useSsl)

    '在服务器上注册

    client.Authenticate(LoginName,
    LoginPassword)

    '获取邮箱邮件总数

    Me.txtEmailCount.Text =
    client.GetMessageCount().ToString

    '按钮设置

    SetButtonEnabled(True, CInt(Me.txtEmailCount.Text))



    Catch

    MsgBox("不能在服务器上注册")

    '按钮恢复

    SetButtonEnabled(False,
    0)

    '退出过程

    exitBtnSub()

    Exit Sub
    End
    Try
    End Sub


    '设置按钮过程
    Private Sub
    SetButtonEnabled(ByVal TrueOrFalse As Boolean, ByVal emailNumber As Integer)


    If TrueOrFalse Then
    '成功连接到服务器,并在服务器上注册成功

    Me.btnConnectLogin.Enabled = False
    '连接按钮不可用

    Me.btnFetchEmail.Enabled = True
    '收信按钮可用

    Me.txtRead.ReadOnly = False
    '想读取的邮箱号文本框可写

    Me.txtRead.Text = emailNumber
    '设置要读取的邮箱号是最大的邮件号

    '清空发件人、主题、内容、附件

    Me.txtFrom.Clear()

    Me.txtSubject.Clear()

    Me.txtBody.Clear()

    Me.lstAttachments.Items.Clear()

    Else
    '连接已被取消

    Me.btnConnectLogin.Enabled = True
    '连接按钮可用

    Me.btnFetchEmail.Enabled = False
    '收信按钮不可用

    Me.txtRead.ReadOnly = True
    '想读取的邮箱号文本框不可写

    'Me.txtRead.Text = 0 '设置要读取的邮箱号是0



    End If

    End Sub


    '限制该文本框只可以输入整数
    Private Sub
    txtRead_KeyPress(ByVal sender As Object, ByVal e As
    System.Windows.Forms.KeyPressEventArgs) Handles
    txtRead.KeyPress
    If
    Char.IsDigit(e.KeyChar) Or e.KeyChar = Chr(8)
    Then

    e.Handled = False

    Else

    e.Handled = True
    End If


    End Sub


    '设置属性
    Private Sub
    txtRead_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Handles txtRead.TextChanged

    Me.messageNumber = CInt(Me.txtRead.Text)
    End Sub
    End
    Class


  • 相关阅读:
    《css世界》学习摘要
    微信小程序知识点积累
    事件冒泡 事件委派
    遍历后台返回数据
    初识open stack
    keystone初识
    KVM详解
    openstack详解
    NoSQL之Redis集群理论
    gfs分布式文件系统
  • 原文地址:https://www.cnblogs.com/shuiguang/p/2026658.html
Copyright © 2011-2022 走看看