Могу ли я пропустить MIME-разбор, чтобы получить вложение? - PullRequest
1 голос
/ 11 декабря 2008

Я новичок здесь, поэтому прежде всего я приветствую вас

Я пишу приложение для запуска на моем Windows Mobile (Pocket PC). К вашему сведению, я использую VB.NET.

Моя идея состоит в том, чтобы использовать мою учетную запись электронной почты у моего провайдера, который дает мне много ГБ для использования в качестве виртуального диска онлайн-хранилища. В двух словах, более или менее похожий на GMAIL-привод, о котором вы, возможно, читали. Я уже написал код для подключения, используя telnet-сокет, к учетным записям SMTP, POP3 и IMAP моего провайдера. Я могу войти и, таким образом, пока все хорошо.

В моем конкретном случае меня не интересуют сами письма, а на самом деле вложения, которые будут моими файлами на этой виртуальной карте storgae. Я нашел много бесплатных классов, в основном на C #, для загрузки электронных писем с вложениями и, самое главное, MIME-парсинга. К сожалению, все эти классы, так или иначе, используют классы / пространства имен Net Framework, которые не включены в NET Compact Framework, который используется Windows Mobile. Сама запись MIME-парсера слишком сложна для меня и моих знаний.

Поэтому, по крайней мере, в отношении моего кода для получения через POP3 или IMAP, я думал, что, как только я скачаю все байты на моем устройстве, я просто проанализирую полную электронную почту (проверяя, где границы) получить части, которые были закодированы в Base64, а затем декодировать и переименовать его, используя имя и расширение файла, который я написал в поле темы сообщения электронной почты во время отправки. Таким образом, я мог бы избежать всего, что касается MIME и всех его значений ...

Что касается отправки SMTP, мне все еще нужно изучить это. Любые идеи будут оценены.

Извините за этот роман - как вы думаете - могу ли я пропустить получение MIME-парсеров и просто использовать обычный разбор строк?

С уважением, Moster67

Ответы [ 3 ]

1 голос
/ 11 декабря 2008

Вы можете попытаться найти границы в заголовках писем, а затем разбить электронное письмо на эту строку. ИМХО будет необходим синтаксический анализ подразделов (на ум приходят кодирование и кодировка; в большинстве случаев просто не удалится заголовок), но немного проще, чем работать со всем сообщением сразу.

Слово предостережения: это хрупкий подход - он будет работать с некоторыми сообщениями, но разбивать на другие (например, вложенные составные сообщения, изменение строки границы (не должно, но может произойти) и т. Д.).

1 голос
/ 01 декабря 2009

написание парсера строки почтового сообщения на самом деле написание простого парсера MIME. Вы можете написать быстрый и грязный MIME-парсер за несколько часов. Если вы будете использовать его для синтаксического анализа похожих писем (например, отправленных из одного места одним и тем же клиентским программным обеспечением), все это должно вам понадобиться.

Подробнее о MIME см.

Несколько дней работы должны быть реалистичными. Я принимал участие в разработке простого собственного MIME-парсера (на взлом которого ушло несколько дней и проанализировал 95% полученных писем), который превратился в коммерческий продукт (несколько месяцев работы, тонны юнит-тестов и куча действительно непростых тестовых писем из дикой природы), а затем был изменен, чтобы его можно было использовать в Compact Framework (изменения из-за ограниченных в памяти устройств, изменения из-за того, что только небольшая часть .NET Framework портирована на .NET CF). И добавьте переписывание довольно большой части функциональности CryptoAPI, чтобы заставить подписанную и зашифрованную электронную почту S / MIME работать на .NET CF.

Парсер MIME является частью компонента Rebex Secure Mail для .NET / .NET CF и может быть загружен с http://www.rebex.net/secure-mail.net/

Поддерживаются все версии .NET и .NET CF. Даже .NET CF1 динозавр ;-). Тем не менее, это не бесплатно.

1 голос
/ 11 декабря 2008

Парсер MIME - это просто парсер строк. Их очень легко написать, особенно если вы знаете, что просто хотите / нуждаетесь в подмножестве типов MIME. Найти RFC и реализовать его самостоятельно.

...