使用 nodemailer 接收邮件而不设置“允许安全性较低的应用程序访问”

Adr*_*ama 5 node.js nodemailer

我想问一些关于 nodemailer 的问题,我编写的代码如下

Var client = nodemailer.createTransport ({ 
Service: 'gmail',
Auth: {
User: 'example@gmail.com', // Your email address
Pass: '123' // Your password},
Tls: {rejectUnauthorized: false}
});
Run Code Online (Sandbox Code Playgroud)

这有效,但在成功交付后,当我必须接收已发送的电子邮件时,我需要启用 Gmail 设置,例如“允许安全性较低的应用程序访问”。我不想设置它。

那么我如何从 example@gmail.com 发送电子邮件到 example1@gmail.com,而不设置“允许安全性较低的应用程序访问”并直接在邮箱中接受消息!!???或者应该添加任何其他插件?

谢谢;)

Vik*_*kur 6

从Google OAuth2.0 Playground获取accessToken和refreshToken,从Google开发者控制台获取clientId和clientSecret

const nodemailer = require('nodemailer');
const xoauth2 = require('xoauth2');
var express = require('express');
var router = express.Router();


var smtpTransport = nodemailer.createTransport('SMTP',{
  service:"Gmail",
  auth:{
    XOAuth2: {
      user:'sender@emailaddress.com',
      clientId: 'your-client-id',
      clientSecret: 'your-cliet-secret',
      accessToken:'your-access-token',
      refreshToken: 'your-refresh-token'

  }
  }
});

router.get('/emaildemo', function(req, res, next) {

  var mailOptions = {
  from: 'sender@emailaddress.com', 
  to: 'xxx@email.com', 
  subject: 'TEST SUBJECTT', 
  text: 'TEST MAIL', 
}; 
smtpTransport.sendMail(mailOptions, function(error, info){
  if(error){
 console.log('Error Occured', error);
  return res.send(error);
  }
  return res.send("mail send successfully");
}); 

});
module.exports = router;
Run Code Online (Sandbox Code Playgroud)