Obtenir une erreur dans l’envoi de courrier à l’aide de Nodemailer

Je crée un projet et suis toutes les étapes écrites en réponse de Nodemailer / Gmail – Qu’est-ce qu’un jeton d’actualisation et comment puis-je en obtenir un? mais je suis erreur.

J’utilise le code suivant:

var smtpTransport = nodemailer.createTransport("SMTP", { service: "Gmail", connectionTimeout : "7000", greetingTimeout : "7000", auth: { XOAuth2: { user: "", clientId: "", clientSecret: "", refreshToken: "" } } }); var mailOptions = { from: "", to:usersEmailId, subject: 'subject', html: 'ssortingng Of Html' } smtpTransport.sendMail(mailOptions, function(error, response){ if(error){ console.log(error); }else{ console.log("Message sent: " + response.message); } smtpTransport.close(); }); 

Obtenir l’erreur suivante

 { [Error: Connection timeout] code: 'ETIMEDOUT', errno: 'ETIMEDOUT', stage: 'init' } { [Error: Connection timeout] code: 'ETIMEDOUT', errno: 'ETIMEDOUT', stage: 'init' } { [XOAUTH2Error: invalid_client] name: 'XOAUTH2Error', stage: 'auth' } { [XOAUTH2Error: invalid_client] name: 'XOAUTH2Error', stage: 'auth' } 

et ma deuxième question est comment envoyer une pièce jointe. J’ai seulement le nom du fichier et l’ url du fichier.

    Utilisez ceci parce que le chemin est incorrect dans nodemailer doc. ceci est un problème dans nodemailer use filepath cela fonctionne

     attachments : [ { // file on disk as an attachment filename: 'name Of File',, filePath : 'url of file' // stream this file }, ], alternatives : [ { // file on disk as an attachment filename: 'name Of File', filePath : 'url of file' // stream this file }, ], 

    J’ai écrit un module wrapper autour de Nodemailer / nodemailer-smtp-transport / xoauth2 .

    Jetez un oeil à ce Gist si aide:

     // USAGE // response is coming (in my case) from REDIS var constants = { stmp_host: 'smtp-relay.gmail.com', user: resp.SUPORTE_MAIL, user_name: resp.SUPORTE_NAME, clientId: resp.OAUTH_CLIENT_ID, clientSecret: resp.OAUTH_CLIENT_SECRET, refreshToken: resp.OAUTH_REFRESH_TOKEN }; var Mailer = require('./my-mailer.js'); var mailer = new Mailer(constants); mailer.createTransporter().then(function(){ var send_info = { subject: 'A test!', html: 'some
    formatted text', to_name: 'Some Name', to_email: '[email protected]' }; return mailer.getMailObject(send_info); }).then(function(mail_obj){ mailer.sendMail(mail_obj).then(function(info) { console.info('sent to: ', info); process.exit(); }).catch(function(err) { console.info('error: ', err); }); });