Tôi đang cố gắng gửi dữ liệu từ biểu mẫu mà tôi đã tạo cho tài khoản gmail của mình, khi nhấp vào nút sumbit Tôi luôn gặp lỗi tương tự. Tôi đã tìm thấy rất nhiều vấn đề về nodemailer, nhưng không có vấn đề nào giống như vấn đề tôi gặp phải.Nodemailer bằng gmail, Không thể tạo 'mailer' thuộc tính trên chuỗi 'SMTP'
ofcourse Tôi đã tuyên bố clientId của tôi nhưng chỉ xóa cho bài đăng này.
TypeError: Cannot create property 'mailer' on string 'SMTP'
at Mail (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\nodemailer\lib\mailer\index.js:45:33)
at Object.module.exports.createTransport (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\nodemailer\lib\nodemailer.js:46:14)
at C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\src\app.js:39:26
at Layer.handle [as handle_request] (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\route.js:131:13)
at Route.dispatch (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\index.js:277:22
at Function.process_params (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\index.js:330:12)
at next (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\index.js:271:10)
at serveStatic (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\node_modules\serve-static\index.js:75:16)
at Layer.handle [as handle_request] (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\index.js:312:13)
at C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\index.js:280:7
at Function.process_params (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\index.js:330:12)
at next (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\index.js:271:10)
đây là app.js tôi:
// require modules
const express = require('express');
const app = express();
const pug = require('pug');
const fs = require('fs')
const bodyParser = require('body-parser');
const pg = require('pg');
const nodemailer = require('nodemailer');
const xoauth2 = require('xoauth2');
//set view engine and views
app.set('views', 'src/views');
app.set('view engine', 'pug');
app.use(bodyParser.urlencoded({extended: false}));
app.use(express.static('./resources/'));
//display index page
app.get('/', function (req, res){
console.log('Index is displayed on localhost');
res.render('index');
});
app.post('/zorginstelling/ziekenhuis-olvg-locatie-west-voorheen-sint-lucas-andreas-ziekenhuis-amsterdam-109428/waardeer', function (req, res) {
var mailOpts, smtpTrans;
console.log('form word gepost')
//Setup Nodemailer transport, I chose gmail.
smtpTrans = nodemailer.createTransport('SMTP', {
service: 'Gmail',
auth: {
xoauth2: xoauth2.createXOAuth2Generator({
user: '[email protected]',
clientId: '-' ,
clientSecret: '-' ,
refreshToken: '-'
})
}
});
//Mail options
mailOpts = {
from: req.body.rating[name] + ' <' + req.body.rating[email][first] + '>',
to: '[email protected]',
subject: 'Test',
text: req.body.rating[comment] + req.body.rating[questions][behandeling] + req.body.rating[name]
};
smtpTrans.sendMail(mailOpts, function (error, response) {
//Email not sent
if (error) {
console.log('There was a problem')
}
//Yay!! Email sent
else {
console.log('Email sent!')
}
});
});
var server = app.listen(4000, function() {
console.log('Example app listening on port: ' + server.address().port);
});
Cảm ơn, nó đã giải quyết được một sự cố, nhưng sau khi tôi tiếp tục gặp sự cố, tên người dùng và mật khẩu của tôi không hợp lệ. Nhưng bây giờ mọi thứ đang hoạt động với ít mã hơn. –
Đó là vì bạn cần phải giảm các thông số bảo mật của gmail và cho phép "truy cập các ứng dụng kém an toàn" trong cài đặt ứng dụng khách. Sau đó, ứng dụng của bạn sẽ có quyền truy cập vào hộp thư của bạn qua giao thức smt. Có thể có một cách khác để giải quyết vấn đề này, nhưng tôi chưa tìm thấy chúng. –
Tôi biết tôi đã làm điều đó, nhưng có vẻ như mã của tôi là vấn đề tôi nghĩ theo cách phức tạp tôi đoán. –