使用pop3接收电子邮件

时间:2014-06-20 15:56:43

标签: asp.net vb.net pop3

我正在尝试使用pop3接收电子邮件。我不能使用“OpenPop.dll”,因为我只能使用.net 4.0。

我可以联系读者,但我不知道如何打印读者所做的事情。

我想要的是一种计算这四个项目的方法:来自,主题,收到和每封电子邮件的大小。

电子邮件本身我也想计算。

    Dim client As TcpClient
    Dim clientStream As Stream
    Dim writer As System.IO.StreamWriter
    Dim reader As System.IO.StreamReader
    Dim host, email, pass As String
    Dim port As Integer
    Dim ssl As Boolean
    host = "pop3.email.com"
    email = "this@email.com"
    pass = "pass1"
    port = 995 
    If client Is Nothing Then
        client = New TcpClient()
    End If
    If Not client.Connected Then
        client.Connect(host, port)
    End If
    If ssl = True Then
        Dim secureStream As New System.Net.Security.SslStream(client.GetStream())
        secureStream.AuthenticateAsClient(host)
        clientStream = secureStream
        secureStream = Nothing
    Else
        clientStream = client.GetStream()
    End If
    writer = New StreamWriter(clientStream)
    reader = New StreamReader(clientStream)

2 个答案:

答案 0 :(得分:1)

即使它是用C#编写的,也有一个开源的POP3实现可能会给你一些关于如何实现这样的东西的指示:

http://www.codeproject.com/Articles/21377/NET-POP-MIME-Client

如果你想自己实施它而不是我建议你刷新你的POP3知识:

http://www.ietf.org/rfc/rfc1939.txt

答案 1 :(得分:0)

不仅要编写一个POP3客户端(实际上并不那么难),还要编写一个MIME解析器(这是一项大量的工作),这是一项相当大的工作。

我不确定你的意思"电子邮件本身我也想计算。" ,但我想这意味着你要解析整件事情?或者您只关心解析标题以获取From,Subject和Received标题?

要获得MIME规范的列表(以及链接),您需要查看以实现MIME解析器,请查看this page

您还想查看POP3 specification

首先,POP3有一个命令来获取每条消息的大小(在" STAT"命令中读取)。没有命令可以获取每个单独的标头值,但是如果您想要的话,只需下载标题的命令(在" TOP"命令中读取)。不过,您需要自己解析它们。

标题的基本解析并不困难,但是当你需要处理不是简单ASCII的标题值时(例如,如果它们是未编码的8位文本,根据rfc2047的规则,或2)的某种组合。

你可能不关心完全解码标题值,只是接受这样一个事实:即使你完美地实现了MIME规范,你也无法解码很多标题......但如果你有兴趣知道我写了一篇名为Why decoding rfc2047-encoded headers is hard的博文,写了一些比较常见/严重违反标准的行为。

有一个Richard Signes的演讲录音,我认为如果你想学习解析电子邮件,我觉得非常有价值。你可以在这里找到:https://www.youtube.com/watch?v=JENdgiAPD6c

希望这足以让你开始。