Saltar al contenido

¿Cuál es la forma definitiva de utilizar Gmail con OAuth y Nodemailer?

Solución:

Lo siguiente funcionó para mí, hay dos partes:

01) app.js

02) Google y OAuth2 configuración


app.js

var nodemailer = require("nodemailer");

var transporter = nodemailer.createTransport({
    host: 'smtp.gmail.com',
    port: 465,
    secure: true,
    auth: {
        type: 'OAuth2',
        user: local_settings.my_gmail_username,
        clientId: local_settings.my_oauth_client_id,
        clientSecret: local_settings.my_oauth_client_secret,
        refreshToken: local_settings.my_oauth_refresh_token,
        accessToken: local_settings.my_oauth_access_token
    }
});


var mail = {
    from: "John Smith <[email protected]>",
    to: "[email protected]",
    subject: "Registration successful",
    text: "You successfully registered an account at www.mydomain.com",
    html: "<p>You successfully registered an account at www.mydomain.com</p>"
}

transporter.sendMail(mail, function(err, info) {
    if (err) {
        console.log(err);
    } else {
        // see https://nodemailer.com/usage
        console.log("info.messageId: " + info.messageId);
        console.log("info.envelope: " + info.envelope);
        console.log("info.accepted: " + info.accepted);
        console.log("info.rejected: " + info.rejected);
        console.log("info.pending: " + info.pending);
        console.log("info.response: " + info.response);
    }
    transporter.close();
});

Configuración de Google y OAuth

El código anterior requiere la siguiente configuración:

01) Vaya a https://console.developers.google.com

02) Si no tiene un proyecto, se le pedirá que cree uno

ingrese la descripción de la imagen aquí

03) Haga clic en Create Project

04) Haga clic en Create

ingrese la descripción de la imagen aquí
05) Entrar a Project Name y haga clic en Create

ingrese la descripción de la imagen aquí

06) Selecciona el Gmail API

ingrese la descripción de la imagen aquí

07) Haga clic en Enable

ingrese la descripción de la imagen aquí

08) Haga clic en Create Credentials

ingrese la descripción de la imagen aquí

09) Ingrese la configuración requerida

ingrese la descripción de la imagen aquí

10) Asigne un nombre al cliente de OAuth y asegúrese de agregar https://developers.google.com/oauthplayground como un redirect URI con el fin de generar el refresh y access tokens más tarde

ingrese la descripción de la imagen aquí
11) Definir la configuración de la pantalla de consentimiento

ingrese la descripción de la imagen aquí

12) Hacer clic I'll do this later y Done

ingrese la descripción de la imagen aquí

13) Clickea en el Edit icono, para ver su Client ID y Client Secret

ingrese la descripción de la imagen aquí

14) Para generar access y refresh tokens, vaya a https://developers.google.com/oauthplayground

15) Clickea en el cog icono en la parte superior derecha, marque Use your own OAuth credentials y entrar Client ID y Client Secret

ingrese la descripción de la imagen aquí

16) En la columna de la izquierda, seleccione Gmail API v1 y haga clic en Authorise APIs

ingrese la descripción de la imagen aquí

17) Si ha iniciado sesión en varias cuentas, cuando se le solicite, seleccione la cuenta correspondiente

ingrese la descripción de la imagen aquí

18) Hacer clic Allow

ingrese la descripción de la imagen aquí

19) Hacer clic Exchange authorisation code for tokens

ingrese la descripción de la imagen aquí

No estoy seguro de por qué hay una cuenta regresiva en el access token, pero con suerte el mensaje en la parte inferior de la pantalla significa que el token no caducará.

Pantalla de consentimiento de OAuth

Definitivamente tiene razón sobre las lagunas y la información desactualizada, e hizo un gran trabajo al documentar los pasos necesarios para usar Gmail con OAuth y nodemailer. No obstante, creo que vale la pena mencionar que en la página de Credenciales hay otro paso: el Pantalla de consentimiento de OAuth pestaña.

Contiene un formulario como el envío de una aplicación de Google Play que requiere la validación de Google, si elige que su aplicación no sea validada, tiene una limitación de 100 llamadas de lo que ellos llaman Visores sensibles antes de que se le solicite la presentación.

¿Qué pasa con la cuota?

Todavía no tengo claro si esta cuota de 100 llamadas se consumirá incluso si no selecciona ningún permiso adicional para usar ámbitos sensibles (los predeterminados son correo electrónico, perfil, openid). Espero que no, ya que la pantalla de consentimiento de OAuth solicita cosas como Enlace a la página de inicio de la aplicación y Dominios autorizados eso es algo que quizás no tenga si está trabajando en una aplicación de backend.

Creo que todo este procedimiento es realmente lento e inútilmente complejo, ya que la mayoría de las personas siguen todos estos pasos para enviar un correo electrónico desde su aplicación utilizando nodemailer …

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *