如何在后端使用 node JS 服务器的 sendmail 从 Webix 应用程序发送电子邮件
How to send an email from a Webix application using sendmail of node JS server at the backend
我想通过单击 UI 中的按钮从 webix 应用程序发送电子邮件,这将通过 ajax 调用向节点 JS 服务器发送 post 请求在后端。
Webix 部分如下所示:
{ id:'tb',
view: 'toolbar',
cols: [
{view:"button", id:"mail_btn", type:"icon", label:"SendEmail", tooltip:"Send an email", width:100, on: {onItemClick:function(){sendEmail()}} },
]
}
回调函数:
function sendEmail() {
var bodypart = {"message" : "This is a test mail"};
$.ajax({
type: 'POST',
url: '/appl/email',
data: bodypart,
success: function (data) {
console.log("success");
},
error: function(err){
console.log(err);
}
});
}
}
上面的 ajax 调用向我使用 sendmail npm 包实现此目的的节点 JS 发送请求。代码如下所示:
var sendmail = require('sendmail')();
app.post('/appl/email', sendmail());
function sendEmail() {
sendmail({
from: 'xyz@support.com',
to: 'abc@support.com',
subject: 'test sendmail',
html: 'Mail of test sendmail ',
}, function(err, reply) {
console.log(err && err.stack);
console.dir(reply);
});
}
但是,我遇到以下错误:
Error: Route.post() requires callback functions but got a [object Undefined]
有没有办法在不向节点 JS 服务器发送请求的情况下从 webix 本身发送电子邮件?
或者如何使用 sendmail npm 包来实现我正在尝试的方式?
如有任何帮助,我们将不胜感激。
您的问题不在于您使用 sendmail 的方式,而在于您使用 express 路由的方式。
这是我刚刚编写的示例代码,它给我的错误与您在代码中遇到的错误相同。
const express = require('express');
const app = express();
app.get('/', doSomething());
function doSomething() {
console.log('this is a sample test');
}
app.listen(3000, () => console.log('server is running'));
问题是 app.get
和 app.post
一样,具有它需要的特定签名。传入的函数应该有 req
和 res
参数。您还可以选择最后添加 next
参数。
我的上述代码就是这样修复的。
const express = require('express');
const app = express();
app.get('/', (req, res) => {
doSomething();
res.json('success');
});
function doSomething() {
console.log('this is a sample test');
}
我想通过单击 UI 中的按钮从 webix 应用程序发送电子邮件,这将通过 ajax 调用向节点 JS 服务器发送 post 请求在后端。 Webix 部分如下所示:
{ id:'tb',
view: 'toolbar',
cols: [
{view:"button", id:"mail_btn", type:"icon", label:"SendEmail", tooltip:"Send an email", width:100, on: {onItemClick:function(){sendEmail()}} },
]
}
回调函数:
function sendEmail() {
var bodypart = {"message" : "This is a test mail"};
$.ajax({
type: 'POST',
url: '/appl/email',
data: bodypart,
success: function (data) {
console.log("success");
},
error: function(err){
console.log(err);
}
});
}
}
上面的 ajax 调用向我使用 sendmail npm 包实现此目的的节点 JS 发送请求。代码如下所示:
var sendmail = require('sendmail')();
app.post('/appl/email', sendmail());
function sendEmail() {
sendmail({
from: 'xyz@support.com',
to: 'abc@support.com',
subject: 'test sendmail',
html: 'Mail of test sendmail ',
}, function(err, reply) {
console.log(err && err.stack);
console.dir(reply);
});
}
但是,我遇到以下错误:
Error: Route.post() requires callback functions but got a [object Undefined]
有没有办法在不向节点 JS 服务器发送请求的情况下从 webix 本身发送电子邮件? 或者如何使用 sendmail npm 包来实现我正在尝试的方式?
如有任何帮助,我们将不胜感激。
您的问题不在于您使用 sendmail 的方式,而在于您使用 express 路由的方式。
这是我刚刚编写的示例代码,它给我的错误与您在代码中遇到的错误相同。
const express = require('express');
const app = express();
app.get('/', doSomething());
function doSomething() {
console.log('this is a sample test');
}
app.listen(3000, () => console.log('server is running'));
问题是 app.get
和 app.post
一样,具有它需要的特定签名。传入的函数应该有 req
和 res
参数。您还可以选择最后添加 next
参数。
我的上述代码就是这样修复的。
const express = require('express');
const app = express();
app.get('/', (req, res) => {
doSomething();
res.json('success');
});
function doSomething() {
console.log('this is a sample test');
}