UNPKG

gmailclient

Version:

Cliente para enviar correos, incluir attachments, guardar listas de distribución

68 lines (56 loc) • 2.51 kB
'use strict' // Cargar librerias principales const fs = require('fs'); const path = require('path'); const { google } = require('googleapis'); const readline = require('readline'); const signale = require('signale'); const global = signale.scope('global scope'); const { productionPathInit } = require('../config/conf') module.exports.run = (credentials) => { // Guardar credentials en archivo credentials.json const credentialsPath = path.join(__dirname, `${productionPathInit}/config/access/credentials.json`); // Recuperar credenciales, para poder crear un cliente fs.readFile(credentialsPath, (err, content) => { if (err) { global.fatal(err.message) global.fatal('No file "credentials.json" found'); } else { global.pending('pending authentication!') const credentials = JSON.parse(content); // Crear el cliente con las credenciales const oAuthClient = new google.auth.OAuth2( credentials.installed.client_id, credentials.installed.client_secret, credentials.installed.redirect_uris[0] ); // Generar la url de autorizacion: cliente.generateAuthUrl const authUrl = oAuthClient.generateAuthUrl({ access_type: 'offline', scope: 'https://www.googleapis.com/auth/gmail.send' }) // Con esta url el usuario copia, va y acepta en un navegador y recupera code global.info(`Download the confirmation code of: ${authUrl} \n`); // El usuario ingresa el codigo de autorizacion obtenido del navegador const cmdline = readline.createInterface({ input: process.stdin, output: process.stdout }); cmdline.question('Ingrese Codigo: ', code => { cmdline.close(); global.watch(code); // El cliente creado solicita un token con dicho codigo oAuthClient.getToken(code, (err, token) => { if (err) return console.log(`Error Getting token:\n', ${err.message}`); // Se guarda el token obtenido (que viene como un json) const tokenPath = path.join(__dirname, '../config/access/token.json'); fs.writeFile(tokenPath, JSON.stringify(token), (err) => { if (err) return global.fatal(`Error Saving token:\n", ${err.message}`); global.success(`Token expiration date: ${new Date(token.expiry_date)}`); global.complete('credentials was generated!'); }) }) }) } }) }