gmail-node

It makes Gmail interation easy using Node.js

Usage no npm install needed!

<script type="module">
  import gmailNode from 'https://cdn.skypack.dev/gmail-node';
</script>

README

Node GMail Sender

How to get secret key

  • Open link https://console.developers.google.com/flows/enableapi?apiid=gmail
  • Use this wizard to create or select a project in the Google Developers Console and automatically turn on the API.
  • Click Continue, then Go to credentials.
  • At the top of the page, select the OAuth consent screen tab. Select an Email address, enter a Product name if not already set, and click the Save button.
  • Select the Credentials tab, click the Create credentials button and select OAuth client ID.
  • Select the application type Other, enter the any name "gmail-node-app", and click the Create button.
  • Click OK to dismiss the resulting dialog.
  • Click the file_download (Download JSON) button to the right of the client ID.
  • Move this file to your working directory and use it with any name like client_secret.json.

Usage

npm install gmail-node --save

Available GMail methods

  • Init GMail:
var gmailNode = require('gmail-node');
var clientSecret = {
    installed: {
        client_id: "k677725446467-6li25pcqgkcllsoh6f6dijcvse64n9pf.apps.googleusercontent.com",
        project_id: "clean-node-119606",
        auth_uri: "https://accounts.google.com/o/oauth2/auth",
        token_uri: "https://accounts.google.com/o/oauth2/token",
        auth_provider_x509_cert_url: "https://www.googleapis.com/oauth2/v1/certs",
        client_secret: "kF7DvoA_ZrNfa65GnU2zQBgw7",
        redirect_uris: [
            "urn:ietf:wg:oauth:2.0:oob",
            "http://localhost"
        ]
    }
};
gmailNode.init(clientSecret, './token.json', function(err,data){ ... });
  • Send GMail Plain content:
var emailMessage = {
    to: 'guptkashish@gmail.com',
    subject: 'Test Subject',
    message: 'Test Email'
};
 gmailNode.send(emailMessage, function (err, data) { ... });
  • Send GMail HTML content:
var emailMessage = {
    to: 'guptkashish@gmail.com',
    subject: 'Test Subject',
    message: '<h1>Test Email</h1>'
};
 gmailNode.sendHTML(emailMessage, function (err, data) { ... });
  • Generate URL for Token: Method: generateUrl(): This will return the URL, which user have to open to get code.
gmailNode.generateUrl(clientSecret);
  • Generate Token from code generate from URL Method: generateToken():
gmailNode.generateToken(clientSecret, '4/bZ94wJNeLj4b1nZ0nUhQ7fbqfjIYd4basm_GuG3br2s',(err, data)=>{
    console.log(err || data)
});
  • If you have Token and Credenctial then you can directly use Method: sendWithToken or sendHTMLWithToken No need to call Method: init():
gmailNode.sendWithToken(testMessage, clientSecret, token,function (err, data) {
    console.log(err,data);
});
gmailNode.sendHTMLWithToken(testMessage, clientSecret, token,function (err, data) {
    console.log(err,data);
});
  • Clear GMail Token:
gmailNode.clearToken();

Example

/* Client-Secret Downloaded from Google Development */
var clientSecret = {
    installed: {
        client_id: "k677725446467-6li25pcqgkcllsoh6f6dijcvse64n9pf.apps.googleusercontent.com",
        project_id: "clean-node-119606",
        auth_uri: "https://accounts.google.com/o/oauth2/auth",
        token_uri: "https://accounts.google.com/o/oauth2/token",
        auth_provider_x509_cert_url: "https://www.googleapis.com/oauth2/v1/certs",
        client_secret: "kF7DvoA_ZrNfa65GnU2zQBgw7",
        redirect_uris: [
            "urn:ietf:wg:oauth:2.0:oob",
            "http://localhost"
        ]
    }
};

var gmailNode = require('gmail-node');

// Message
var testMessage = {
    to: 'guptkashish@gmail.com',
    subject: 'Test Subject',
    message: '<h1>Test Email</h1>'
};

// ClientSecret:
gmailNode.init(clientSecret, './token.json', initComplete);

function initComplete(err, dataObject) {
    if(err){
        console.log('Error ', err);
    }else {
        gmailNode.send(testMessage, function (err, data) {
            console.log(err,data);
        });
        
        // OR
        
        gmailNode.sendHTML(testMessage, function (err, data) {
            console.log(err,data);
        });
    }
}

Contribution

It's an open source project, you can report issue and form this repository to create pull request to add features.