I am trying to send the data from the form I created to my gmail account, when clicking the sumbit button I always get the same error. I found a lot of issues about nodemailer, but none of them seem to be the same issue as I am experiencing.
Ofcourse I have stated my clientId but just deleted for this post.
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)
this is my app.js:
// 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); });
The nodemailer has been reworked, so old code structure could throw such error. Try use the following structure:
var xoauth2 = require('xoauth2'); smtpTrans = nodemailer.createTransport({ service: 'Gmail', auth: { xoauth2: xoauth2.createXOAuth2Generator({ user: '[email protected]', //and other stuff
Please, check official resource for more details:
https://community.nodemailer.com/2-0-0-beta/using-oauth2/
The current problem Today for help is the change of information faster, and Alexander was good when he said "nodemailer is reworked";
i use this easy line to define the transporter:
var smtpTransport = nodemailer.createTransport("smtps://youruser%40gmail.com:"+encodeURIComponent('yourpass#123') + "@smtp.gmail.com:465");
i got it from here https://community.nodemailer.com/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With