Node Error Mailer

I use nodemailer in my Firebase Cloud functions to send mail when data is added to the real-time database.

The code:

const functions = require('firebase-functions');
const nodemailer = require('nodemailer');

const gmailEmail = 'myemail.in@gmail.com';
const gmailPassword = 'mypassword';

const mailTransport = nodemailer.createTransport({
  service: 'gmail',
  auth: {
  user: gmailEmail,
  password: gmailPassword
}
});

const APP_NAME = 'ABC In'

exports.salonCreatedAccount = functions.database.instance('abc-
in').ref('/abc/{def}').onCreate(event => {
const snapshot = event.data;
const val = snapshot.val()
console.log(val);

const email = val.email;
const displayname = val.name;

return sendconfirmationEmail(email, displayname);
});

function sendconfirmationEmail(email, displayName){
const mailOptions = {
  from: `${APP_NAME} <abc.in@gmail.com>`,
  to: email
};

mailOptions.subject = `Welcome to ${APP_NAME}!`;
mailOptions.text = `Some Text`;
return mailTransport.sendMail(mailOptions).then(() => {
  console.log(`New welcome mail sent to ${email}`);
});
}

I get the following error on execution. NOTE. I made sure that the email address and password are correct and there is no error.

Error:

Error: Missing credentials for "PLAIN"
at SMTPConnection._formatError (/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:591:19)
at SMTPConnection.login (/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:340:38)
at connection.connect (/user_code/node_modules/nodemailer/lib/smtp-transport/index.js:270:32)
at SMTPConnection.once (/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:188:17)
at SMTPConnection.g (events.js:292:16)
at emitNone (events.js:86:13)
at SMTPConnection.emit (events.js:185:7)
at SMTPConnection._actionEHLO (/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:1113:14)
at SMTPConnection._processResponse (/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:747:20)
at SMTPConnection._onData (/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:543:14)

How to fix it?

+4
source share
4 answers

The same error was fixed from the local nodejs test application, to which
@Zaheen replied: Nodemailer with Gmail and NodeJS , part of his answer is copied here:

var smtpTransport = require('nodemailer-smtp-transport');

var transporter = nodemailer.createTransport(smtpTransport({
  service: 'gmail',
  host: 'smtp.gmail.com',
  auth: {
    user: 'somerealemail@gmail.com',
    pass: 'realpasswordforaboveaccount'
  }
}));

( BTW 2FactorAuth ).
nodemailer-smpt-transport, xoauth2 host auth {}.


Firebase, ... ...:)

+1

nodemailer, , , Firebase , . gmail.email gmail.password Google Cloud.

, /yourProject/functions$, :

firebase functions:config:set gmail.email="senderEmail@gmail.com" gmail.password="yourPassword"

:

const gmailEmail = functions.config().gmail.email;
const gmailPassword = functions.config().gmail.password;
const mailTransport = nodemailer.createTransport({
service: 'gmail',
 auth: {
  user: gmailEmail,
  pass: gmailPassword
 }
});

, , , "error credablesas plain error"

+1

- .

" " PLAIN "":

  • Firebase Console
  • Click Log In
  • Choose Google
  • Make sure it is turned on.

This solved my mistake. (Same code as you)

0
source

Source: https://habr.com/ru/post/1692099/


All Articles