Я пытаюсь передать необработанное содержимое исходящего электронного письма в 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 непосредственно в командной строке, чтобы получить необходимый мне рейтинг спама.
Надеюсь, эта информация поможет кому-нибудь еще с этой проблемой.
С уважением,
Мартин.
Как вы передаете файл .EML в spamassassin? Вы упомянули командную строку, можете ли вы опубликовать эту команду?
Круто, это именно то, что я искал.