我正在尝试通过我的网站发送一封简单的邮件到我自己的其他帐户。但它不起作用。我正在使用node mailer,并严格按照文档进行操作。
我尝试过检查任何类型的语法错误或外部因素。
//Send Mail
router.post('/volunteer', ensureAuthenticated, async(req, res) => {
// const { name, email, city } = req.body;
//Create the transporter
require('dotenv').config();
const nodemailer = require('nodemailer');
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: process.env.EMAIL,
pass: process.env.PASSWORD
}
});
//set up mailOptions
let mailOptions = {
from: 'readsocially001@gmail.com',
to: 'vaibhav.ag.001@gmail.com',
subject: 'Volunteer',
text: 'HEY'
};
transporter.sendMail(mailOptions, function (err, data) {
if (err) {
console.log("some error");
} else {
console.log("SENT");
}
});
res.redirect('/volunteer');
});
它只是进入if(err)
语句并输出一些错误。实际的错误是:
Error: Missing credentials for "PLAIN"
at SMTPConnection._formatError (/Users/vaibhav2001/Documents/test/ReadSocially/node_modules/nodemailer/lib/smtp-connection/index.js:781:19)
at SMTPConnection.login (/Users/vaibhav2001/Documents/test/ReadSocially/node_modules/nodemailer/lib/smtp-connection/index.js:452:38)
at connection.connect (/Users/vaibhav2001/Documents/test/ReadSocially/node_modules/nodemailer/lib/smtp-transport/index.js:271:32)
at SMTPConnection.once (/Users/vaibhav2001/Documents/test/ReadSocially/node_modules/nodemailer/lib/smtp-connection/index.js:209:17)
at Object.onceWrapper (events.js:286:20)
at SMTPConnection.emit (events.js:198:13)
at SMTPConnection._actionEHLO (/Users/vaibhav2001/Documents/test/ReadSocially/node_modules/nodemailer/lib/smtp-connection/index.js:1309:14)
at SMTPConnection._processResponse (/Users/vaibhav2001/Documents/test/ReadSocially/node_modules/nodemailer/lib/smtp-connection/index.js:940:20)
at SMTPConnection._onData (/Users/vaibhav2001/Documents/test/ReadSocially/node_modules/nodemailer/lib/smtp-connection/index.js:746:14)
at TLSSocket.SMTPConnection._onSocketData (/Users/vaibhav2001/Documents/test/ReadSocially/node_modules/nodemailer/lib/smtp-connection/index.js:189:46)
at TLSSocket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
at TLSSocket.Readable.push (_stream_readable.js:224:10)
at TLSWrap.onStreamRead [as onread] (internal/stream_base_commons.js:94:17) code: 'EAUTH', command: 'API' }
发布于 2019-09-09 02:11:48
根据官方文档,你不能使用普通的凭证:https://nodemailer.com/usage/using-gmail/在Gmail中使用nodemailer,你需要创建一个应用程序,并像这样使用oauth:
host: 'smtp.gmail.com',
port: 465,
secure: true,
auth: {
type: 'OAuth2',
user: 'user@example.com',
accessToken: 'ya29.Xx_XX0xxxxx-xX0X0XxXXxXxXXXxX0x'
}
});
更多示例:https://nodemailer.com/smtp/oauth2/#examples
希望能有所帮助
发布于 2019-09-14 14:44:53
你可以试试这个。
var nodemailer = require('nodemailer');
var xoauth2 = require('xoauth2');
// listen for token updates (if refreshToken is set)
// you probably want to store these to a db
generator.on('token', function(token){
console.log('New token for %s: %s', token.user, token.accessToken);
});
// login
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
xoauth2: xoauth2.createXOAuth2Generator({
user: '{username}',
clientId: '{Client ID}',
clientSecret: '{Client Secret}',
refreshToken: '{refresh-token}',
accessToken: '{cached access token}'
})
}
});
https://stackoverflow.com/questions/57843542
复制相似问题