在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已经对邮件进行了解析,
因此可以直接使用,非常方便。