[英]Cannot create property '_canInitEmulator' on string 'namangarg802@gmail.com'
[英]Nodemailer using gmail, Cannot create property 'mailer' on string 'SMTP'
我試圖將我創建的表單中的數據發送到我的Gmail帳戶,當點擊sumbit按鈕時我總是得到相同的錯誤。 我發現了很多關於nodemailer的問題,但它們似乎都不像我遇到的那樣。
當然我已經說過我的clientId但是剛剛刪除了這篇文章。
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)
這是我的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: 'kylevantil14@gmail.com',
clientId: '-' ,
clientSecret: '-' ,
refreshToken: '-'
})
}
});
//Mail options
mailOpts = {
from: req.body.rating[name] + ' <' + req.body.rating[email][first] + '>',
to: 'kylevantil14@gmail.com',
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);
});
節點編輯器已經過重新設計,因此舊的代碼結構可能會拋出這樣的錯誤。 嘗試使用以下結構:
var xoauth2 = require('xoauth2');
smtpTrans = nodemailer.createTransport({
service: 'Gmail',
auth: {
xoauth2: xoauth2.createXOAuth2Generator({
user: 'kylevantil14@gmail.com',
//and other stuff
請查看官方資源了解更多詳情:
當前的問題今天尋求幫助的是信息的更快變換,亞歷山大在說“節點制作者被重做”時表現得很好;
我使用這個簡單的行來定義轉運者:
var smtpTransport = nodemailer.createTransport("smtps://youruser%40gmail.com:"+encodeURIComponent('yourpass#123') + "@smtp.gmail.com:465");
我有類似的問題。 'nodemailer-smtp-transport'模塊解決了它
var nodemailer = require('nodemailer');
var smtpTransport = require('nodemailer-smtp-transport');
var transport = nodemailer.createTransport(smtpTransport({
service: 'Gmail',
auth:{
xoauth2: xoauth2.createXOAuth2Generator({
user: 'abc@gmail.com',
//and other stuff
通過'npm install nodemailer-smtp-transport'安裝nodemailer-smtp-transport
這對我有用 -
sendEmail: function(account, params) {
// create reusable transporter object using the default SMTP transport
var smtpTransport = nodemailer.createTransport({
service: 'Gmail', // sets automatically host, port and connection security settings
auth: {
user: account.user,
pass: account.password
}
});
var toEmail = params.to[0];
for (var i = 1; i < params.to.length; i++) {
toEmail += ', ' + params.to[i];
}
// setup email data with unicode symbols
var mailOptions = {
from: params.from, // sender address
to: toEmail, // list of receivers
subject: params.subject, // Subject line
text: params.text, // plain text body
html: params.html, // html body
attachments: params.attachments
};
// send mail with defined transport object
smtpTransport.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log('Error while sending mail: ' + error);
} else {
console.log('Message sent: %s', info.messageId);
}
smtpTransport.close(); // shut down the connection pool, no more messages.
});
}
請注意,您必須從谷歌打開不太安全的應用程序。 訪問https://myaccount.google.com/lesssecureapps 。 一旦打開,刷新頁面只是為了確保它實際上已打開(我在4次嘗試中打開它)。
試試以下:
smtpTrans = nodemailer.createTransport({
service: 'Gmail',
auth: {
type: 'OAuth2',
user: 'kylevantil14@gmail.com',
// and other stuff
這對我有用,請試一試
function sendEmailTechnician() {
// Generate test SMTP service account from gmail
nodemailer.createTestAccount((err, account) => {
// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: '', // generated gmail user
pass: '' // generated gmail account password
}
});
// setup email data with unicode symbols
let mailOptions = {
from: 'text <user@gmail.com>', // sender address
to: 'user@gmail.com', // list of receivers
subject: 'text', // Subject line
text: 'text', // plain text body
html: '<b>text</b>' // html body
};
// send mail with defined transport object
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
console.log('Message sent: %s', info.messageId);
// Preview only available when sending through an Ethereal account
console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info));
// Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>
// Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
});
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.