Download/Retrieve Email from Hotmail/Outlook/Live/Office 365 in VB.NET

In previous section, I introduced how to download email from Yahoo account. In this section, I will introduce how to download email from Hotmail/MSN Live/Outlook.com/Office 365 account in VB.NET.

Introduction

Hotmail/Outlook POP3 server address is pop3.live.com. It requires SSL connection on 995 port; Hotmail/Outlook IMAP4 server address is imap-mail.outlook.com. It requires SSL connection on 993 port;

You should use your Hotmail/Outlook email address as the user name for user authentication. For example: your email is liveid@hotmail.com, and then the user name should be liveid@hotmail.com.

Server Port SSL Protocol
pop3.live.com 995 SSL required Pop3
imap-mail.outlook.com 993 SSL required Imap4

Note

Remarks: All of examples in this section are based on first section: A simple VB.NET project. To compile and run the following example codes successfully, please click here to learn how to create the test project and add reference to your project.

[VB.NET Example - Retrieve emails from Hotmail/MSN Live/Outlook account using POP3]

The following example codes demonstrate how to download email from Hotmail/MSN Live/Outlook account using POP3 protocol.

Note

To get the full sample projects, please refer to Samples section.

Imports System.IO
Imports EAGetMail 'imports EAGetMail namespace

Module Module1
    Sub Main()
        ' Create a folder named "inbox" under current directory
        ' to save the email retrieved.
        Dim curpath As String = Directory.GetCurrentDirectory()
        Dim mailbox As String = [String].Format("{0}\inbox", curpath)

        ' If the folder is not existed, create it.
        If Not Directory.Exists(mailbox) Then
            Directory.CreateDirectory(mailbox)
        End If

        ' Hotmail POP3 server is "pop3.live.com"
        Dim oServer As New MailServer("pop3.live.com", _
            "hotmailid@hotmail.com", "yourpassword", ServerProtocol.Pop3)
        Dim oClient As New MailClient("TryIt")

        ' Enable SSL connection
        oServer.SSLConnection = True

        ' Set 995 port
        oServer.Port = 995

        Try
            oClient.Connect(oServer)
            Dim infos As MailInfo() = oClient.GetMailInfos()
            For i As Integer = 0 To infos.Length - 1
                Dim info As MailInfo = infos(i)
                Console.WriteLine("Index: {0}; Size: {1}; UIDL: {2}", _
                        info.Index, info.Size, info.UIDL)

                ' Receive email from POP3 server
                Dim oMail As Mail = oClient.GetMail(info)

                Console.WriteLine("From: {0}", oMail.From.ToString())
                Console.WriteLine("Subject: {0}" & vbCr & vbLf, oMail.Subject)

                ' Generate an email file name based on date time.
                Dim d As System.DateTime = System.DateTime.Now
                Dim cur As New System.Globalization.CultureInfo("en-US")
                Dim sdate As String = d.ToString("yyyyMMddHHmmss", cur)
                Dim fileName As String = [String].Format("{0}\{1}{2}{3}.eml", _
                    mailbox, sdate, d.Millisecond.ToString("d3"), i)

                ' Save email to local disk
                oMail.SaveAs(fileName, True)

                ' Mark email as deleted in Hotmail Account
                oClient.Delete(info)
            Next
            ' Quit and purge emails marked as deleted from Hotmail POP3 server.
            oClient.Quit()
        Catch ep As Exception
            Console.WriteLine(ep.Message)
        End Try

    End Sub
End Module

[VB.NET Example - Retrieve emails from Hotmail/MSN Live/Outlook account using IMAP4]

The following example codes demonstrate how to download email from Hotmail/MSN Live/Outlook account using IMAP4 protocol.

Note

To get the full sample projects, please refer to Samples section.

Imports System.IO
Imports EAGetMail 'imports EAGetMail namespace

Module Module1
    Sub Main()
        ' Create a folder named "inbox" under current directory
        ' to save the email retrieved.
        Dim curpath As String = Directory.GetCurrentDirectory()
        Dim mailbox As String = [String].Format("{0}\inbox", curpath)

        ' If the folder is not existed, create it.
        If Not Directory.Exists(mailbox) Then
            Directory.CreateDirectory(mailbox)
        End If

        ' Hotmail IMAP4 server is "imap-mail.outlook.com"
        Dim oServer As New MailServer("imap-mail.outlook.com", _
            "hotmailid@hotmail.com", "yourpassword", ServerProtocol.Imap4)
        Dim oClient As New MailClient("TryIt")

        ' Enable SSL connection
        oServer.SSLConnection = True

        ' Set 993 IMAP SSL port
        oServer.Port = 993

        Try
            oClient.Connect(oServer)
            Dim infos As MailInfo() = oClient.GetMailInfos()
            For i As Integer = 0 To infos.Length - 1
                Dim info As MailInfo = infos(i)
                Console.WriteLine("Index: {0}; Size: {1}; UIDL: {2}", _
                        info.Index, info.Size, info.UIDL)

                ' Receive email from IMAP4 server
                Dim oMail As Mail = oClient.GetMail(info)

                Console.WriteLine("From: {0}", oMail.From.ToString())
                Console.WriteLine("Subject: {0}" & vbCr & vbLf, oMail.Subject)

                ' Generate an email file name based on date time.
                Dim d As System.DateTime = System.DateTime.Now
                Dim cur As New System.Globalization.CultureInfo("en-US")
                Dim sdate As String = d.ToString("yyyyMMddHHmmss", cur)
                Dim fileName As String = [String].Format("{0}\{1}{2}{3}.eml", _
                    mailbox, sdate, d.Millisecond.ToString("d3"), i)

                ' Save email to local disk
                oMail.SaveAs(fileName, True)

                ' Mark email as deleted in Hotmail Account
                oClient.Delete(info)
            Next
            ' Quit and purge emails marked as deleted from Hotmail IMAP4 server.
            oClient.Quit()
        Catch ep As Exception
            Console.WriteLine(ep.Message)
        End Try

    End Sub
End Module

Retrieve Email from Office 365

First of all, you should go to Office 365 Outlook -> Options -> See All Options -> Account -> My Account -> Settings for POP, IMAP, and SMTP access. You will get your Office 365 POP3/IMAP4 server address and port. The default POP3 server is outlook.office365.com on SSL 995 port; IMAP4 server is outlook.office365.com on SSL 993 port.

Server Port SSL Protocol
outlook.office365.com 995 SSL required Pop3
outlook.office365.com 993 SSL required Imap4

[VB.NET Example - Retrieve emails from Office 365 account using IMAP4]

The following example codes demonstrate how to download email from Offic 365 account using IMAP4 protocol.

Note

To get the full sample projects, please refer to Samples section.

Imports System.IO
Imports EAGetMail 'imports EAGetMail namespace

Module Module1
    Sub Main()
        ' Create a folder named "inbox" under current directory
        ' to save the email retrieved.
        Dim curpath As String = Directory.GetCurrentDirectory()
        Dim mailbox As String = [String].Format("{0}\inbox", curpath)

        ' If the folder is not existed, create it.
        If Not Directory.Exists(mailbox) Then
            Directory.CreateDirectory(mailbox)
        End If

        ' Office 365 IMAP4 server is "outlook.office365.com"
        Dim oServer As New MailServer("outlook.office365.com", _
            "user@domain", "yourpassword", ServerProtocol.Imap4)
        Dim oClient As New MailClient("TryIt")

        ' Enable SSL connection
        oServer.SSLConnection = True

        ' Set 993 IMAP SSL port
        oServer.Port = 993

        Try
            oClient.Connect(oServer)
            Dim infos As MailInfo() = oClient.GetMailInfos()
            For i As Integer = 0 To infos.Length - 1
                Dim info As MailInfo = infos(i)
                Console.WriteLine("Index: {0}; Size: {1}; UIDL: {2}", _
                        info.Index, info.Size, info.UIDL)

                ' Receive email from Office 365 server
                Dim oMail As Mail = oClient.GetMail(info)

                Console.WriteLine("From: {0}", oMail.From.ToString())
                Console.WriteLine("Subject: {0}" & vbCr & vbLf, oMail.Subject)

                ' Generate an email file name based on date time.
                Dim d As System.DateTime = System.DateTime.Now
                Dim cur As New System.Globalization.CultureInfo("en-US")
                Dim sdate As String = d.ToString("yyyyMMddHHmmss", cur)
                Dim fileName As String = [String].Format("{0}\{1}{2}{3}.eml", _
                    mailbox, sdate, d.Millisecond.ToString("d3"), i)

                ' Save email to local disk
                oMail.SaveAs(fileName, True)

                ' Mark email as deleted in Office 365
                oClient.Delete(info)
            Next
            ' Quit and purge emails marked as deleted from Office 365 IMAP4 server.
            oClient.Quit()
        Catch ep As Exception
            Console.WriteLine(ep.Message)
        End Try

    End Sub
End Module

Next Section

At next section I will introduce how to retrieve email with event handler.

Appendix

Comments

If you have any comments or questions about above example codes, please click here to add your comments.