4

我想要做的是将外发电子邮件的原始内容传递给 spamassassin 以计算垃圾邮件分数。我被困在如何获取电子邮件的原始内容上。

我的 C# 代码目前只是构造 MailMessage 并将其传递给 SmtpClient 的 Send() 方法。在发送之前,有没有办法获取邮件消息的原始版本(正如协议可能看到的那样),以便我可以将其传递给 spamassassin 工具进行垃圾邮件评估?

如果我没有很好地解释,请告诉我,我会尽力解释得更好。

提前致谢,

马丁。

4

1 回答 1

6

我已经为我的问题制定了解决方案。

SmtpClient 类有两个可以设置的属性,它们会导致电子邮件存储到 EML 文件而不是实际发送。这样做的最初目的是使电子邮件可以使用 SmtpClient 生成,但实际上是由另一个 SMTP 服务器接收和发送的。

SmtpClient.DeliveryMethod
SmtpClient.PickupDirectoryLocation

如果 SmtpClient.DeliveryMethod 设置为 SmtpDeliveryMethod.SpecifiedPickupDirectory 并且 SmtpClient.PickupDirectoryLocation 设置为机器上某个目录的完整路径,则调用 SmtpClient.Send(mailMessage); 导致它被保存。

反过来,新创建的 EML 文件可以直接在命令行上传递给 spamassassin 以获得我需要的垃圾邮件分数。

希望此信息可以帮助其他人解决此问题。

亲切的问候,

马丁。

于 2009-01-15T12:28:11.463 回答