Я только что попробовал, и это работает

даю бота в Твиттере и внедряю метод, который отправляет мне электронное письмо в случае ошибки. Поскольку я уже использую API Google для доступа к Google Диску (здесь нет проблем), я решил использовать служебную учетную запись для отправки электронного письма (консоль Google сообщает, что его можно использовать таким образом)

На данный момент я пришёл, чтобы отправить электронное письмо:

var config = require('./config/mail');
var google = require('./config/google');
var nodemailer = require('nodemailer');

var send = function (args) {
  let transporter = nodemailer.createTransport({
    'service': 'gmail',
    'auth': {
        'type': 'OAuth2',
        'user': google.client_email,
        'serviceClient': google.client_id,
        'privateKey': google.private_key
    }
  });
  transporter.on('token', token => console.log(token));

  let message = {
    'from': `"${config.serverFromName}" <${config.serverFromMail}>`,
    'to': args.to,
    'subject': args.subject,
    'text': args.text,
    'html': `<p>${args.text}</p>`
  };

  transporter.sendMail(message, (err, info) => {
    if (err) {
      console.log('Mail couldn\'t be sent because: ' + err);
    } else {
      console.log('Mail sent');
    }
  });
};

config/google Файл содержит данные, которые Google генерирует для вас при создании учетной записи службы.config.serverFromName а такжеconfig.serverFromMail являются именем и адресом электронной почты отправителя (не совпадают с идентификатором учетной записи службы).args содержит письмо получателя и содержание

Когда я тестирую метод send, в консоли я получаю следующее сообщение:

Mail couldn't be sent because: Error: Invalid login: 535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8  https://support.google.com/mail/?p=BadCredentials z123sm543690vkd.10 - gsmtp

Я знаю, что токен создается правильно, потому что созданный мной слушатель печатает его:

{ user: '[email protected]',
  accessToken: 'ya29.ElmIBLxzfU_kkuZeyISeuRBeljmAe7HNTlwuG4K12ysUNo46s-eJ8NkMYHQqD_JrqTlH3yheNc2Aopu9B5vw-ivEqvPR4sTDpWBOg3xUU_4XiJEBLno8FHsg',
  expires: 1500151434603 }

Выполняя поиск в Интернете, я обнаружил, что это может быть проблемой с областью OAuth. Однако вся информация, которая говорит об этом, относится к использованию идентификаторов клиентов, а не учетных записей служб. Я не нахожу эту опцию в консоли разработчика Google, либо.

Есть идеи, что я делаю не так?

Ответы на вопрос(0)

Ваш ответ на вопрос