我想要做的是将外发电子邮件的原始内容传递给 spamassassin 以计算垃圾邮件分数。我被困在如何获取电子邮件的原始内容上。
我的 C# 代码目前只是构造 MailMessage 并将其传递给 SmtpClient 的 Send() 方法。在发送之前,有没有办法获取邮件消息的原始版本(正如协议可能看到的那样),以便我可以将其传递给 spamassassin 工具进行垃圾邮件评估?
如果我没有很好地解释,请告诉我,我会尽力解释得更好。
提前致谢,
马丁。
我想要做的是将外发电子邮件的原始内容传递给 spamassassin 以计算垃圾邮件分数。我被困在如何获取电子邮件的原始内容上。
我的 C# 代码目前只是构造 MailMessage 并将其传递给 SmtpClient 的 Send() 方法。在发送之前,有没有办法获取邮件消息的原始版本(正如协议可能看到的那样),以便我可以将其传递给 spamassassin 工具进行垃圾邮件评估?
如果我没有很好地解释,请告诉我,我会尽力解释得更好。
提前致谢,
马丁。
我已经为我的问题制定了解决方案。
SmtpClient 类有两个可以设置的属性,它们会导致电子邮件存储到 EML 文件而不是实际发送。这样做的最初目的是使电子邮件可以使用 SmtpClient 生成,但实际上是由另一个 SMTP 服务器接收和发送的。
SmtpClient.DeliveryMethod
SmtpClient.PickupDirectoryLocation
如果 SmtpClient.DeliveryMethod 设置为 SmtpDeliveryMethod.SpecifiedPickupDirectory 并且 SmtpClient.PickupDirectoryLocation 设置为机器上某个目录的完整路径,则调用 SmtpClient.Send(mailMessage); 导致它被保存。
反过来,新创建的 EML 文件可以直接在命令行上传递给 spamassassin 以获得我需要的垃圾邮件分数。
希望此信息可以帮助其他人解决此问题。
亲切的问候,
马丁。