seanyboy, я могу помочь вам здесь, но прежде чем вы посмотрите на коммерческие решения, есть пара вещей, которые вы должны понять.
Во-первых, существуют сотни или тысячи элементов управления, которые делают то, что вы хотите.
Но вы должны подумать, КАК вы собираетесь их использовать. Я работал в антивирусной компании, и когда мы решили подключить наш продукт к Exchange, стало очевидно, что выбранное нами решение НЕ будет работать. Проблема заключалась в том, что коммерческие приложения следуют RFC (обычно) до T. (Или это TEE? Я не знаю ..) Но вирусы НИКОГДА не следуют стандартам RFC. Итак, я написал свой собственный анализатор Mime для нашего сканера, и мой уровень обнаружения был НАМНОГО лучше, чем все остальное, что мы пробовали. Зачем? Поскольку каждый раз, когда я обнаруживал электронное письмо, которое нарушало RFC, я настраивал код, чтобы справиться с ним. Один пример, который приходит на ум, был «Content-Type: maintype / subtype; param =». Обратите внимание на пробел после param и равно. Это нарушает правила RFC, но большинство читателей почты с этим справляются, что позволяет вирусу делать свое дело.
Но это также двусторонняя монета .... В моем коде я не смог расшифровать вложение, отформатированное следующим образом:
....
Content-Type: application/octet-stream<br>
Content-Transfer-Encoding: base64</p>
<p><a href="http://virus.virussite.com" rel="nofollow noreferrer">http://virus.virussite.com</a><br>
JVBERi0xLjMgCiXi48/TIAo3IDAgb2JqCjw8Ci9Db250ZW50cyBbIDggMCBSIF0gCi9QYXJlbnQg
NSAwIFIKL1Jlc291cmNlcyA2IDAgUgovVHlwZSAvUGFnZQo+PgplbmRvYmoKNiAwIG9iago8PAov
...
Но у коммерческих приложений не было проблем с их синтаксическим анализом ... Скорее всего, потому что они снова следовали RFC и не принимали данные Base64, если длина их не была точно 77 символов (я думаю, что 77 является стандартом RFC. I должен ссылаться на него.).
Но у меня были большие проблемы со сломанным B64 и B64, которые запускали все в одной строке и т. Д., И его пришлось декодировать, поэтому я взял все данные в блоке данных как данные Base64, которые на самом деле были действительными base64 голец. Все остальное было просто пропущено ...
В любом случае, они имеют ключевое значение: решите, что НУЖНО из-под этого контроля, а затем решите, хотите ли вы написать свой собственный, купить коммерческий или даже заплатить кому-то (например, мне), чтобы он написал для вас.
(Я не совсем уверен, что мое последнее предложение приемлемо по правилам переполнения стека, поэтому я не прошу вас, просто скажу, что вы знаете свои варианты. Я упоминаю эту опцию, потому что у вас будет доступ к исходному коду, и мог бы поддерживать его самостоятельно или найти кого-то другого для его обслуживания, если вы решили разорвать отношения с вашим разработчиком. Это не вариант для 99,99% коммерческих решений ...) Если они вносят изменения, то винты ты или твоя заявка, у тебя все хорошо, облажался ..:)
Надеюсь, это поможет или, по крайней мере, даст вам что-нибудь почитать. хех ..
Дайте мне знать, могу ли я чем-нибудь помочь.