如何用vb.net在端口25上监听

如何用vb.net在端口25上监听,vb.net,email,filter,spam,Vb.net,Email,Filter,Spam,我基本上是想在邮件服务器上为收到的电子邮件编写一个垃圾邮件过滤器。我想写一个VB.NET程序,可以监听端口25上的任何传入邮件,然后在其上运行我的脚本,然后将其传递到另一个端口上运行的邮件服务器 我需要做什么才能让我的程序坐下来,等待消息从端口25传入,然后对其作出反应 谢谢。这里是我不久前在VB.NET教程中修改的套接字侦听服务的一部分。基本上,套接字在服务启动时侦听端口25上的流量,接受连接,然后将该连接分配给新线程,发送响应,然后关闭TCP连接 Dim serverSocket As Ne

我基本上是想在邮件服务器上为收到的电子邮件编写一个垃圾邮件过滤器。我想写一个VB.NET程序,可以监听端口25上的任何传入邮件,然后在其上运行我的脚本,然后将其传递到另一个端口上运行的邮件服务器

我需要做什么才能让我的程序坐下来,等待消息从端口25传入,然后对其作出反应


谢谢。

这里是我不久前在VB.NET教程中修改的套接字侦听服务的一部分。基本上,套接字在服务启动时侦听端口25上的流量,接受连接,然后将该连接分配给新线程,发送响应,然后关闭TCP连接

Dim serverSocket As New TcpListener(IPAddress.Any, "25")
Dim ipAddress As System.Net.IPAddress = System.Net.Dns.Resolve(System.Net.Dns.GetHostName()).AddressList(0)
Dim ipLocalEndPoint As New System.Net.IPEndPoint(IPAddress, 25)

Protected Overrides Sub OnStart(ByVal args() As String)
    Dim listenThread As New Thread(New ThreadStart(AddressOf ListenForClients))
    listenThread.Start()
End Sub

Protected Overrides Sub OnStop()
    ' Add code here to perform any tear-down necessary to stop your service.
End Sub

Private Sub ListenForClients()
    serverSocket = New TcpListener(ipLocalEndPoint)
    serverSocket.Start()
    While True
        Dim client As TcpClient = Me.serverSocket.AcceptTcpClient
        Dim clientThread As New Thread(New ParameterizedThreadStart(AddressOf HandleClientComm))
        clientThread.Start(client)
    End While
End Sub

Private Sub HandleClientComm(ByVal client As Object)
    Dim tcpClient As TcpClient = DirectCast(client, TcpClient)
    Dim clientStream As NetworkStream = tcpClient.GetStream

    Dim message As Byte() = New Byte(4095) {}
    Dim bytesRead As Integer

    While True
        If (bytesRead = 0) Then
            Exit While
        End If
        Dim encoder As New asciiencoding()
        Dim serverResponse As String = "Response to send"
        'Response to send back to the testing client
        Dim sendBytes As [Byte]() = encoding.ascii.getbytes(serverResponse)
        clientStream.Write(sendBytes, 0, sendBytes.Length)
    End While
    tcpClient.Close()
End Sub

你自己做了什么来尝试解决这个问题?试图在互联网上找到任何关于监听端口25的参考资料,结果都是空的。你是否错过了这个问题:Vb.net和C#在幕后是一样的,因此很容易找到将C#代码翻译成Vb.net的在线服务:此外,由于C#是一种更常用的语言,您会发现C#中的示例/教程比VB.net多得多,因此,如果不编写C#,花时间开发一种至少用于阅读的工具是值得的。最后,如果你正在寻求帮助,如果你耐心且有礼貌,你会更成功。你可能最好在邮件服务器上实现某种过滤插件,而不是重新构建所有SMTP内容。谢谢Dave。我很感激你的回答。