views:

801

answers:

3

Hi All,

Similar question as this one but for a Microsoft Environment.

Email --> Exchange Server -->[something]

For the [something] I was using Outlook 2003 & C# but it feels messy (A program is trying to access outlook, this could be a virus etc)

Microsoft.Office.Interop.Outlook.Application objOutlook = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.NameSpace objNS = objOutlook.GetNamespace("MAPI");
objNS.Logon("MAPIProfile", "MAPIPassword", false, true);

Is this the best way to do it? Is there a better way of retrieving and processing emails in a Microsoft environment???

+2  A: 

This library provides you basic support for the POP3 protocol and MIME, you can use it to check specified mailboxes and retrieve emails and attachments, you can tweak it to your needs.

Here is another library, this one is for the IMAP protocol, it's very basic but also allows you to fetch complete messages, including attachments...

CMS
+1  A: 

I've been happy with the Rebex components which provide IMAP access. Of course you need to ensure your Exchange administrators will open an IMAP port on your Exchange servers.

Joe
A: 

Using IMAP is a way to go. You can use Mail.dll IMAP component:

using(Imap imap = new Imap())
{
    imap.Connect("imap.company.com");
    imap.Login("user", "password");

    imap.SelectInbox();
    List<long> uids = imap.SearchFlag(Flag.Unseen);
    foreach (long uid in uids)
    {
          string eml = imap.GetMessageByUID(uid);
          IMail message = new MailBuilder()
                    .CreateFromEml(eml);

          Console.WriteLine(message.Subject);
          Console.WriteLine(message.TextDataString); 
    }
    imap.Close(true);
}

You can download it here: Mail.dll email component.

Pawel Lesnikowski