gmail-api-sync
Sync, query and parse Gmail e-mails with Google API.
Provides full and partial e-mail synchronization, as well as parsing the returned message objects into text and html. Takes care of Google Oauth 2 authentication with convenience methods.
Installation
#install and save npm install gmail-api-sync --save
Usage
Require the module.
var gmailApiSync = ;
Load Google Api Project client secret. To get this file follow Step 1 .
gmailApiSync;
Full Synchronization (Requires Oauth2 authentication see below)
Query all e-mails (e.g. from:facebook.com, newer_than:2d, before:2017/04/18). See all posible queries Search operators you can use with Gmail
var options = query: 'from:facebook.com newer_than:2d'; gmailApiSync
Partial Synchronization (Requires Oauth2 authentication see below)
Sync e-mail changes with historyId from last message retrieved. For more information on historyId see Partial synchronization
var options = historyId: previousResponsehistoryId; //previousResponse.historyId: "13855" gmailApiSync;
Authentication with Access Token
This assumes you already have an access token from Google Api. To get one, see test Generate Access Token .
gmailApiSync;
Authentication with ServerAuth Code
This assumes you already have a ServerAuth Code from Google Api. To get one, see test Generate Server Auth code .
gmailApiSync;
Terminal output
~/personal/gmail-api-sync/test$ node generate_server_auth.js Authorize this app by visiting this url: https://accounts.google.com/o/oauth2/auth?access_type=offline&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.compose&response_type=code&client_id=1081826302113-deknk5sgd6n2vutgv3l4ub4530qqc8kh.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3AoobIf you need a accessToken to be generated as well, run: node generate_access_token <SERVER_AUTH_CODE>, with the code you received from the visited URL. ~/personal/gmail-api-sync/test$ node generate_access_token.js 4/AR34xAC0Z437ItI_27FmpDYmCeNMpMWNyZk0G6cV6EQtoken: {"access_token":"ya29.Gls0BCt9gHK7Bmn5mPQFff6JCaVyt8ZcRiUgLPQL4SmAFk-msJOTIaISi-UiPhRD7QHR2n_8dJXymn08helwDCcnHpGK14sqHXhsH3fgTlvaNz1dZbA7P6LJO4BH","refresh_token":"1/kVLTLeR7vb1e6tuT6XHWBqZ0nG-qwldfeO1uhwdwBok","token_type":"Bearer","expiry_date":1492885695675}
Reponse Format
The returned e-mails can be formated in the following modes if specified in the options param:
- list: Returns the most basic format including just the messageId and threadId.
- metadata: Returns all the message headers but no body (textHtml or textPlain).
- raw: Returns the full email message data with body content in the raw field as a base64url encoded string.
- full (default): Returns a fully parsed message including all headers and decoded body (textHtml and/or textPlain).
var options = query: 'subject:"Claim your free iPhone"' format: 'metadata'
Full working example
var gmailApiSync = ; gmailApiSync; var options = query: 'from:*.org' format: 'metadata' gmailApiSync;