Программно открыть письмо из POP3 и извлечь вложение - PullRequest
6 голосов
/ 21 июля 2009

У нас есть поставщик, который отправляет файлы CSV в виде вложений электронной почты. Эти файлы CSV содержат статусы, которые импортируются в наше приложение. Я пытаюсь полностью автоматизировать процесс, но в настоящее время это зависит от того, кто-то откроет электронное письмо, сохранит вложение на общий ресурс сервера, чтобы приложение могло использовать этот файл.

Поскольку я не могу убедить поставщика изменить свой процесс, например, предложить расположение FTP или веб-службу, я застрял при попытке автоматизировать существующий процесс.

Кто-нибудь знает способ программно открыть электронное письмо из учетной записи POP3 и извлечь вложение? Предпочтительное решение будет находиться на сервере Windows 2003, будет написано VB.NET и защищено. Приложение может находиться на том же сервере, что и сервер POP3, например, мы можем настроить бесплатный сервер POP3, поставляемый с Windows Server, и проверять почтовый файл, хранящийся в файловой системе.

Кстати, мы готовы заплатить за готовое решение, если оно существует.

Примечание: я посмотрел на этот вопрос , но ответ указывает на решение CodeProject, которое не работает с вложениями.

Ответы [ 3 ]

3 голосов
/ 16 октября 2009

Попробуйте Почтовый компонент Mail.dll , он очень доступный , поддерживает вложения национальных символов и прост в использовании, он также поддерживает SSL :

Using pop3 As New Pop3()
    pop3.Connect("mail.server.com") 
    pop3.Login("user", "password")                            

    Dim builder As New MailBuilder()
    For Each uid As String In pop3.GetAll()           
        ' Receive email message'
        Dim mail As IMail = builder.CreateFromEml(pop3.GetMessageByUID(uid))

        'Write out received message'
        Console.WriteLine(mail.Subject)

        'Here you can use mail.Attachmets collection'
        For Each attachment As MimeData In mail.Attachments
            Console.WriteLine(attachment.FileName)
            attachment.Save("c:\" + attachment.FileName)
            ' you can also use attachment.Data here'
        Next attachment

    Next

    pop3.Close(true)   
End Using

Вы можете скачать его здесь: http://www.lesnikowski.com/mail.

2 голосов
/ 21 июля 2009

возможное дублирование Чтение электронной почты с использованием Pop3 в C #

По крайней мере, есть множество предложений, которые могут оказаться полезными

1 голос
/ 11 мая 2013

Я добавлю последнее предложение для более обобщенного решения «скачать сообщения POP3 и извлечь вложения» с использованием существующего программного обеспечения и минимального программирования. Мне нужно было сделать это для клиента, который переключился на получение факсов по электронной почте и не был доволен сохранением вложений вручную в место, где они могли быть импортированы в приложение.

Для загрузки сообщений в * nix системах fetchmail кажется стандартным и очень функциональным, но я выбрал mpop для простоты и совместимости с Windows ( но это кроссплатформенный). Если бы mpop не справился со мной, я, вероятно, закончил бы тем, что сделал что-то с getmail на основе Python, который был создан, когда разработка fetchmail на некоторое время остановилась (с тех пор возобновилась).

Mpop управляется либо через командную строку, либо через файл конфигурации, поэтому я просто создал несколько файлов конфигурации и в командной строке определяю, какой файл загрузить. Я использую его в режиме «Exchange pickup directory», что означает, что он просто загружает сообщения и удаляет их как текстовые (.eml) файлы в указанном каталоге.

Для извлечения вложенных сообщений UUDeview представляется стандартом (я использую порт Windows UUDeview ) практически для любой системы, которую вы можете захотеть, используя примерно любые функции, которые вы могли бы хотеть. Моей основной альтернативой этому был сценарий Python с гораздо меньшими возможностями, который я разработал для другого клиента в 2007 году, но я рад пойти с предварительно скомпилированным исполняемым файлом поверх установки Python или упаковки с любым из Python- Опции to-exe.

Наконец, есть конфигурация - наряду с двумя вышеупомянутыми конфигурационными файлами mpop (с которыми я мог бы покончить, используя параметры командной строки), у меня также есть два двухстрочных файла .cmd, запускаемых каждые 10 минут по расписанию - первая строка для запуска mpop для загрузки в рабочий каталог, а вторая строка для запуска UUDeview и извлечения вложений указанных типов (.pdf или .tif), затем удаляются все файлы, из которых извлечены вложения. Вывод отправляется в другой каталог, из которого сотрудники могут напрямую прикреплять файлы по мере необходимости.

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

...