Spamasassin检查分数C#代码
有没有办法检查ASP.Net应用程序中的分数?Net的类或类似的东西?其他垃圾邮件过滤器怎么样。 --编辑Spamasassin检查分数C#代码,c#,asp.net,spam-prevention,spamassassin,C#,Asp.net,Spam Prevention,Spamassassin,有没有办法检查ASP.Net应用程序中的分数?Net的类或类似的东西?其他垃圾邮件过滤器怎么样。 --编辑 我正在寻找一种方法来检查C#中电子邮件的垃圾邮件分数 我不确定这是否是您要搜索的内容,但有一个C#包装器可以简化与代码项目上的SpamAssassin服务器的通信: 希望有帮助 这是我超级简化的“只需检查分数”代码,用于连接到C#正在运行的垃圾邮件刺客电子邮件检查,这是我为其编写的。只需将SA设置为在服务器上运行,并设置访问权限 然后您可以使用此代码调用它: public class
我正在寻找一种方法来检查C#中电子邮件的垃圾邮件分数 我不确定这是否是您要搜索的内容,但有一个C#包装器可以简化与代码项目上的SpamAssassin服务器的通信:
希望有帮助 这是我超级简化的“只需检查分数”代码,用于连接到C#正在运行的垃圾邮件刺客电子邮件检查,这是我为其编写的。只需将SA设置为在服务器上运行,并设置访问权限 然后您可以使用此代码调用它:
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;
}
}
公共类SimpleSpamAssassin
{
公共类规则结果
{
公众双倍得分=0;
公共字符串规则=”;
公共字符串Description=“”;
公共规则结果(){}
公共规则结果(字符串行)
{
Score=double.Parse(line.Substring(0,line.IndexOf(“”).Trim());
line=line.Substring(line.IndexOf(“”+1);
Rule=line.Substring(0,23).Trim();
Description=行.子字符串(23).Trim();
}
}
公共静态列表GetReport(字符串服务器IP,字符串消息)
{
string命令=“报告”;
StringBuilder sb=新的StringBuilder();
sb.AppendFormat(“{0}SPAMC/1.2\r\n”,命令);
sb.AppendFormat(“内容长度:{0}\r\n\r\n”,message.Length);
b.附加格式(信息);
byte[]messageBuffer=Encoding.ASCII.GetBytes(sb.ToString());
使用(Socket spamAssassinSocket=新套接字(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp))
{
连接(服务器IP,783);
spamAssassinSocket.Send(messageBuffer);
spamAssassinSocket.Shutdown(SocketShutdown.Send);
收到整数;
string receivedMessage=string.Empty;
做
{
字节[]接收缓冲区=新字节[1024];
received=spamAssassinSocket.received(接收缓冲区);
receivedMessage+=Encoding.ASCII.GetString(receiveBuffer,0,received);
}
while(接收>0);
spamAssassinSocket.Shutdown(SocketShutdown.Both);
返回ParseResponse(receivedMessage);
}
}
私有静态列表解析响应(字符串receivedMessage)
{
//合并行尾
receivedMessage=receivedMessage.Replace(“\r\n”,“\n”);
receivedMessage=receivedMessage.Replace(“\r”,“\n”);
string[]line=receivedMessage.Split('\n');
列表结果=新列表();
bool-inReport=false;
foreach(行中的字符串行)
{
如果(在报告中)
{
尝试
{
添加(新规则结果(line.Trim());
}
抓住
{
//报告结束后
}
}
if(第行开始,以“--”号填列)
inReport=true;
}
返回结果;
}
}
使用非常简单:
List<RuleResult> spamCheckResult = SimpleSpamAssassin.GetReport(IP OF SA Server, FULL Email including headers);
List spamCheckResult=SimpleSpamAssassin.GetReport(SA服务器的IP,包含标题的完整电子邮件);
它将返回您点击的垃圾邮件检查规则列表以及由此产生的分数影响。检查分数是多少?您可能会更详细地了解您正在尝试做什么。Ridvan,你想安装一个系统,从服务器获取电子邮件,并检查哪些是垃圾邮件,哪些是好的?如果是这样,你想如何处理好消息和坏消息?我正在尝试实现一个工具,如果提供了发件人、主题和正文,它将检查电子邮件的垃圾邮件分数。不是在我收到电子邮件时,而是在发送电子邮件之前,或者是在一个网络工具显示电子邮件的垃圾邮件分数之前。我已经看到了这一点,但对我来说,这并不是真正的垃圾邮件,这里的一个做为一个快速的桌面应用程序。如果您想使用programattic,我认为您可能必须将spamassassin作为服务运行,并使用其服务接口查询分数。现在,您可以使用ToGetting error on SpamAssassissionSocket.Receive(receiveBuffer)“System.Net.Sockets.SocketException:'现有连接被远程主机强制关闭'