Search code examples
node.jsemailgmail-apinodemailer

Getting error in Mail send Using Nodemailer


I create a project and follow all step written in answer of Nodemailer/Gmail - What exactly is a refresh token and how do I get one? but i am error.

I use following code:

      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: 'string Of Html'
    }

        smtpTransport.sendMail(mailOptions, function(error, response){
                                        if(error){
                                            console.log(error);
                                        }else{
                                            console.log("Message sent: " + response.message);
                                        }

                                        smtpTransport.close(); 
                                    });

Getting following error

{ [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' }

and my second question is how to send attachment. I have only name of file and url of file.


Solution

  • Use this because path wrong in nodemailer doc. this is issue in nodemailer use filepath this is working

    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
        },
    ],