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