aspNetIMAP can easily fetch email from Gmail. To do this you must do the following:
a) Configure IMAP access in Gmail
b) Download the AdvancedIntellect.Ssl.dll from www.advancedintellect.com/download.aspx
c) Use aspNetIMAP over SSL at port 993 to connect.
Lets discuss this below.
Configure IMAP access in Gmail
Before you can access email, you must first configure IMAP in Gmail. To do this, log into Gmail, and click on the settings tab. You should see something similar to what is below. Basically, you want select "Enable IMAP".

Download the AdvancedIntellect.Ssl.dll
Once you have IMAP configured in Gmail, you need to download the AdvancedIntellect,Ssl.dll plugin to use with aspNetIMAP. You can download the dll from:
http://www.advancedintellect.com/download.aspx
Gmail only allows you to connect over IMAP using SSL. The AdvancedIntellect,Ssl.dll allows you to do this.
Use aspNetIMAP over SSL at port 993 to connect.
Once you've downloaded the dll, you can integrate it into your project.
If you are using VS.NET, import the dll into your application, and set a reference to it.
If you are not using VS.NET, you should be able to just copy the dll to your /bin directory.
Once that is done, the following code example will get you started. This example simply downloads the message count from your inbox, and loops through the headers of the individual messages.
C#
IMAP4 imap = new IMAP4( "imap.gmail.com" );
//create and load the ssl socket
AdvancedIntellect.Ssl.SslSocket ssl = new AdvancedIntellect.Ssl.SslSocket();
imap.LoadSslSocket( ssl );
//logging on the ssl socket
ssl.Logging = true;
ssl.LogPath = "c:\\ssl.log";
//rest of the IMAP properties
imap.Port = 993;
imap.Username = "MyAccount@gmail.com";
imap.Password = "MyPassword";
//any logging for troubleshooting
imap.Logger = new IMAPLog();
imap.Logger.Path = "c:\\imap.log";
imap.Logger.Overwrite = true;
imap.Connect();
imap.Login();
//get the message count
MailFolder inbox = imap.SelectInbox();
int count = inbox.MessageCount;
//write it out
Response.Write( count.ToString() );
FetchClient fc = inbox.FetchClient;
//get the headers for each message (IMAP is a '1' based index. Start at '1'
for( int i=1;i<=count;i++)
{
string headers = fc.Headers(i, IndexType.Ordinal );
//do some work on the headers
DoWork( headers );
}
imap.Disconnect();
VB.NET
Dim imap As New IMAP4("imap.gmail.com")
'create and load the ssl socket
Dim ssl As New AdvancedIntellect.Ssl.SslSocket()
imap.LoadSslSocket(ssl)
'logging on the ssl socket
ssl.Logging = True
ssl.LogPath = "c:\ssl.log"
'rest of the IMAP properties
imap.Port = 993
'any logging for troubleshooting
imap.Logger = New IMAPLog()
imap.Logger.Path = "c:\imap.log"
imap.Logger.Overwrite = True
imap.Connect()
imap.Username = "MyAccount@gmail.com"
imap.Password = "MyPassword"
imap.Login()
'get the message count
Dim inbox As MailFolder = imap.SelectInbox()
Dim count As Integer = inbox.MessageCount
'write it out
Response.Write(count.ToString())
Dim fc As FetchClient = inbox.FetchClient
'get the headers for each message (IMAP is a '1' based index. Start at '1'
Dim i As Integer
For i = 1 To count
Dim headers As String = fc.Headers(i, IndexType.Ordinal)
'do some work on the headers
DoWork(headers)
Next i
imap.Disconnect()
As always, if anyone has any questions, feel free to contact me over at the Contact Us web page.
Thanks,
Dave Wanta