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