2008-10-21 3 views
5

Моя компания требует от меня использовать Outlook для моего E-mail. Outlook практически ничего не делает, как я хочу это делать, и это сильно меня разочаровывает. (Я не пытаюсь начать здесь пламенную войну, он должен делать именно то, чего хотят тысячи исполнителей, но я не генеральный директор.)Сохранение/организация/поиск электронной почты Outlook за пределами Outlook

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

Возможно, какая-то хорошая программа с открытым исходным кодом уже может это сделать ... это было бы здорово. Пожалуйста, дайте мне знать.

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

Возможно, есть альтернативный подход, который я не рассматривал?

Мой предпочтительный язык для этого - C#, но при необходимости я могу использовать другие.

ответ

6

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

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

private RDOSession _MailSession = new RDOSession(); 
    private RDOFolder _IncommingInbox; 
    private RDOFolder _ArchiveFolder; 
    private string _SaveAttachmentPath; 

    public MailBox(string Logon_Profile, string IncommingMailPath, 
        string ArchiveMailPath, string SaveAttPath) 
    { 
     _MailSession.Logon(Logon_Profile, null, null, true, null, null); 
     _IncommingInbox = _MailSession.GetFolderFromPath(IncommingMailPath); 
     _ArchiveFolder = _MailSession.GetFolderFromPath(ArchiveMailPath); 
     _SaveAttachmentPath = SaveAttPath; 
    } 
public void ProcessMail() 
     { 

      foreach (RDOMail msg in _IncommingInbox.Items) 
      { 
       foreach (RDOAttachment attachment in msg.Attachments) 
       { 
        attachment.SaveAsFile(_SaveAttachmentPath + attachment.FileName); 
        } 
       } 
       if (msg.Body != null) 
       { 
        ProcessBody(msg.Body); 
       } 

      } 

     } 

редактировать: Это, как я это называю, и то, что передается

MailBox pwaMail = new MailBox("Self Email User", @"\\Mailbox - Someone\Inbox", 
           @"\\EMail - Incomming\Backup", @"\\SomePath"); 
Смежные вопросы