2011-02-18 16 views
5

¿Hay alguna forma de verificar el puntaje en una aplicación ASP.Net? ¿Una clase o algo similar para .Net? ¿Qué hay de otros filtros de correo no deseado por ahí. - Editado Estoy buscando una forma de verificar la puntuación de spam de los mensajes de correo electrónico en C#.spamassassin check score C# code

+0

¿Qué puntuación? Puede ser más detallado sobre lo que está tratando de hacer. http://tinyurl.com/so-hints –

+0

Ridvan, ¿desea implementar un sistema que reciba los correos electrónicos del servidor y compruebe qué es correo no deseado y qué es bueno? si es así, ¿qué quieres hacer con buenos y malos mensajes? –

+0

Estoy tratando de implementar una herramienta que verifique el puntaje de spam de un mensaje de correo electrónico si se proporciona From, Subject and Body. No cuando recibo el correo electrónico, pero antes de que se envíe un correo electrónico, o una herramienta web para mostrar el puntaje de correo electrónico no deseado. He visto este http://www.codeproject.com/KB/recipes/BayesianCS.aspx pero para mí no es realmente Spam Assasin – Ridvan

Respuesta

1

No estoy muy seguro de si eso es lo que está buscando, pero hay un C# envoltorio que simplifica la comunicación con un servidor de SpamAssassin en Proyecto Código:

la esperanza de que ayuda!

4

Aquí está mi código súper simplificado de "simplemente compruebe el puntaje" para conectarse a un correo electrónico en ejecución de Spam Assassin desde C# que escribí para http://elasticemail.com. Simplemente configure SA para que se ejecute en un servidor y configure los permisos de acceso.

continuación, puede utilizar este código para llamarlo:

public class SimpleSpamAssassin 
{ 
    public class RuleResult 
    { 
     public double Score = 0; 
     public string Rule = ""; 
     public string Description = ""; 

     public RuleResult() { } 
     public RuleResult(string line) 
     { 
      Score = double.Parse(line.Substring(0, line.IndexOf(" ")).Trim()); 
      line = line.Substring(line.IndexOf(" ") + 1); 
      Rule = line.Substring(0, 23).Trim(); 
      Description = line.Substring(23).Trim(); 
     } 
    } 
    public static List<RuleResult> GetReport(string serverIP, string message) 
    { 
     string command = "REPORT"; 

     StringBuilder sb = new StringBuilder(); 
     sb.AppendFormat("{0} SPAMC/1.2\r\n", command); 
     sb.AppendFormat("Content-Length: {0}\r\n\r\n", message.Length); 
     sb.AppendFormat(message); 

     byte[] messageBuffer = Encoding.ASCII.GetBytes(sb.ToString()); 

     using (Socket spamAssassinSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) 
     { 
      spamAssassinSocket.Connect(serverIP, 783); 
      spamAssassinSocket.Send(messageBuffer); 
      spamAssassinSocket.Shutdown(SocketShutdown.Send); 

      int received; 
      string receivedMessage = string.Empty; 
      do 
      { 
       byte[] receiveBuffer = new byte[1024]; 
       received = spamAssassinSocket.Receive(receiveBuffer); 
       receivedMessage += Encoding.ASCII.GetString(receiveBuffer, 0, received); 
      } 
      while (received > 0); 

      spamAssassinSocket.Shutdown(SocketShutdown.Both); 

      return ParseResponse(receivedMessage); 
     } 

    } 

    private static List<RuleResult> ParseResponse(string receivedMessage) 
    { 
     //merge line endings 
     receivedMessage = receivedMessage.Replace("\r\n", "\n"); 
     receivedMessage = receivedMessage.Replace("\r", "\n"); 
     string[] lines = receivedMessage.Split('\n'); 

     List<RuleResult> results = new List<RuleResult>(); 
     bool inReport = false; 
     foreach (string line in lines) 
     { 
      if (inReport) 
      { 
       try 
       { 
        results.Add(new RuleResult(line.Trim())); 
       } 
       catch 
       { 
        //past the end of the report 
       } 
      } 

      if (line.StartsWith("---")) 
       inReport = true; 
     } 

     return results; 
    } 

} 

El uso es muy fácil:

List<RuleResult> spamCheckResult = SimpleSpamAssassin.GetReport(IP OF SA Server, FULL Email including headers); 

le proporcione la lista de reglas de verificación de spam se golpea y el impacto puntuación resultante.