Проблема аутентификации при отправке почты через nodemailer через служебную учетную запись - PullRequest
0 голосов
/ 06 июня 2018

То, чего я пытаюсь добиться, - это отправка почты через мой нодейлер из моего веб-приложения получателю через служебную учетную запись.

Я взял ссылку по следующим ссылкам

  1. https://developers.google.com/identity/protocols/OAuth2ServiceAccount
  2. https://gypsyshen.com/2018/03/01/secure-gmail-access-with-oauth2-and-2lo-in-express/
  3. https://nodemailer.com/smtp/oauth2/

Вот код:

var express = require('express');
var router = express.Router();
var nodemailer = require('nodemailer');
var {google} = require('googleapis');
var serviceKey = require('../key/serviceKey.json');

router.post('/', function(req, res, next){
  var jwtClient = new google.auth.JWT(serviceKey.client_email, null, serviceKey.private_key, ['https://mail.google.com'], null);

  jwtClient.authorize(function(error, token){
    if(error){
      console.log('Error: ' + error);
      res.json({success: false, error: error});
      return;
    }

    console.log('JWT Authorisation Success');

    var transporter = nodemailer.createTransport({
      host : 'smtp.gmail.com',
      port : 465,
      secure : true,
      auth : {
        type : 'OAuth2',
        user : serviceKey.client_email,
        serviceClient : serviceKey.client_id,
        privateKey : serviceKey.private_key,
        accessToken : token.access_token,
        expires : token.expiry_date
      }
    });

    var requestBody = req.body;
    var data = requestBody['data'];    

    var msg = "Data: "+data;

    transporter.sendMail({
      from: serviceKey.client_email,
      to: recipient@abc.com,
      subject : 'Test Mail',
      text : msg
    }, function(error, info){
        if(error){
          console.log("Error: "+error);
        } else {
          console.log("Success: "+info);
        }
    });


  });
});

module.exports = router;

Теперь проблема, с которой я сталкиваюсь, - хотя консоль регистрирует сообщение «Авторизация JWT», позже, когда она действительно отправляет почту, я получаю эту ошибку

Ошибка: Неверный логин: 535-5.7.8 Имя пользователя и пароль не приняты.Узнайте больше на 535 5.7.8 https://support.google.com/mail/?p=BadCredentials v5-v6sm24994162pfd.1 - gsmtp

Я не могу найти решение для этого.Пожалуйста, помогите, а также, предложите несколько полезных ресурсов, чтобы узнать об этом подробнее.

Дополнительная информация: Роль учетной записи службы установлена ​​как «Пользователь учетной записи службы»

...