在.net中接收邮件

    技术2022-05-19  21

       在VS.net2005中,没有使用POP3协议进行邮件接收的类。因此,要么使用TCP/IP类自己实现POP3协议,要么使用第三方

    软件。自己实现POP3协议本身很简单,只需要进行连接、用户认证、发送命令、接收数据等,难点在于解析邮件内容。因为有一般

    的邮件,有服务器退回的邮件,有附件的邮件,各种编码的邮件等,因此在这里介绍一个免费的第三方软件LumiSoft。

       下载或者查看LumiSoft的帮助,请参照下面的URL。

        http://www.lumisoft.ee/lswww/download/downloads/Net/

     

        LumiSoft功能强大,实现了TCP/IP、UDP、FTP、POP3、SMTP等等协议,而且很详细的帮助文件,类似于微软的MSDN。

        输入上面的URL,下载LumiSoft.Net.zip,解压缩。里面有C#的源程序,在Net/Net/bin/Release目录下有LumiSoft.Net.dll。

    把这个DLL参照到自己的工程里面。然后就可以编程了。本文只使用其中的POP3_Client部分。

        VB.net的例子如下:

     

        Imports LumiSoft.Net.POP3.Client    Imports LumiSoft.Net.Mail

        Public Function GetEmails(ByVal host As String, ByVal port As Integer, ByVal userName As String, ByVal password As String) As List(Of Mail_Message)    

            Dim result As List(Of Mail_Message)        result = New List(Of Mail_Message)    '初始化

            Try            Dim gotEmailIds As List(Of String) = New List(Of String)  '用于判断是否重复邮件            Dim pop3 As POP3_Client = New POP3_Client

                pop3.Connect(host, port)                                     '连接服务器            pop3.Authenticate(userName, password, False)  '用户认证

                For Each info As POP3_ClientMessage In pop3.Messages   '循环取得邮件                If Not gotEmailIds.Contains(info.UID) Then                      '邮件是否重复                    gotEmailIds.Add(info.UID)

                        Dim bytes() As Byte = info.MessageToByte()                '取得邮件内容                    Dim mimeMsg As Mail_Message = Mail_Message.ParseFromByte(bytes)    '解析邮件内容

                        result.Add(mimeMsg)                                                    '添加到列表中                End If

                    info.MarkForDeletion()                                                      '服务器上标记为删除            Next

                pop3.Disconnect()                                                                '结束,断开连接        Catch ex As Exception            '错误处理

            End Try

            Return result    End Function

         得到邮件列表后,就可以循环处理邮件了。或者保存到邮件,或者保存到数据库。由于Mail_Message已经对邮件进行了解析,

    因此可以直接使用,非常方便。


    最新回复(0)