I am attempting to send an email using Nodemailer and Twilio Sendgrid, following the tutorial [here](https://flawsomedev.com/posts/secure-restapi-user-authentication-node-JWT-mongodb/). As far as I can tell I am following the instructions in the tutorial, as well as the[Nodemailer](https://nodemailer.com/smtp/) and [Sendgrid](https://app.sendgrid.com/guide/integrate/langs/smtp) documentation. Every time this method is called, the code in the catch block executes, and I get the error `Error: Missing credentials for "PLAIN"`.

My question was closed due to association with the question [here](https://stackoverflow.com/questions/48854066/missing-credentials-for-plain-nodemailer), however my problem is different and none of the solutions on the thread apply. I am using my own domain to send, not gmail.com. I want to solve the problem without using Oauth2, which from what I understand I should not need, given that I am using an email domain I control. Also I am already using `pass' rather than 'password` for my authorization data (the top solution on the associated answer).

I've been stuck on this for a few days now , and I'd appreciate any insight anyone can offer!

Here is my code:

```
async function sendEmail(email, code) {
    try{
        const smtpEndpoint = "smtp.sendgrid.net";
        const port = 465;
        const senderAddress = 'Name "contact@mydomain.com"';
        const toAddress = email;
        const smtpUsername = "apikey";
        const smtpPassword = process.env.SG_APIKEY;
        const subject = "Verify your email";

        var body_html = `<!DOCTYPE> 
        <html>
          <body>
            <p>Your authentication code is : </p> <b>${code}</b>
          </body>
        </html>`;

        let transporter = nodemailer.createTransport({
          host: smtpEndpoint,
          port: port,
          secure: true, 
          auth: {
            user: smtpUsername,
            pass: smtpPassword,
          },
          logger: true,
          debug: true,
        });

        let mailOptions = {
          from: senderAddress,
          to: toAddress,
          subject: subject,
          html: body_html,
        };

        let info = await transporter.sendMail(mailOptions);
        return { error: false };
    } catch (error) {
    console.error("send-email-error", error);

    return {
      error: true,
      message: "Cannot send email",
    };
  }
}

```

And here is the log:
[![error log in bash terminal](https://i.stack.imgur.com/qQ4HB.png)](https://i.stack.imgur.com/qQ4HB.png)

Thanks!