Search code examples
c#gmail-imapgmail-api

How to check Gmail for new mail from desktop app?


I'm absolutely new to C#.

I'd like to write simple tray application that will check mail mailboxes for new mail. No extra functionality needed. Except maybe for opening a browser for specific account.

So far i tried TcpClient() and raw IMAP commands, but looks like i'm not allowed to:

* OK Gimap ready for requests from 80.235.87.101 k8mb64099440een
* NO [WEBALERT https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbvKabQnjALUA3Xdbjo28....Fgf4FIEg_33cqJJiB96NNrV8F_0MrM5A] Web login required.
tag NO [ALERT] Please log in via your web browser: http://support.google.com/mail/accounts/bin/answer.py?answer=78754 (Failure)

Then, I went to Google Developer Console, created a project, enabled Gmail API. But, the moment I saw quota limits, I started to ask myself - how would I go about releasing an open source app if there are operation quotas?

So the first question: is Gmail API there for business google accounts?

Secondly, is there any example on how could I just auth to check my private email to see if there are new messages or not?

Thank you.


Solution

  • On the quota issue

    The default quota limits are pretty high and largely to protect Google infrastructure. They can be raised by filing out the request. IMAP has similar limits just not documented as clearly.

    If you use the Gmail API with history.list() to poll for updates it'll be more efficient/cheaper than with IMAP. Should easily support hundreds of thousands of users of said app.

    That said, oauth2 for installed apps (Gmail API or IMAP or anything) has a clear deficiency in that anyone that installs the app can basically make calls and eat up quota. Thunderbird and other open-source things (even those that use IMAP with oauth2) have similar problems...

    first question

    yes, Gmail API is for business google accounts (Apps for Work) as well as normal user @gmail.com accounts.

    second question

    there are quickstarts for a number of languages including c# https://developers.google.com/gmail/api/quickstart/ that should get you through the basics (auth, setting up API). you may need to look at the java/python quickstarts if something isn't covered as extensively in the C# docs. for checking for updates on a mailbox see this guide: https://developers.google.com/gmail/api/guides/sync