2017-04-23 5 views
1

UI의 단추를 클릭하여 Webix 응용 프로그램에서 전자 메일을 보내려고하면 ajax 호출을 통해 게시 요청을 보냅니다. 백엔드에서 노드 JS 서버백엔드에서 노드 JS 서버의 센드 메일을 사용하여 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()}} },  
     ] 
} 

콜백 함수 : webix 부는 아래와 같다

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 호출 노드에 요청을 전송 JS I 센드 NPM 패키지를 사용하고있는 곳을 달성했다. 아래 코드는 다음과 같습니다 그러나

var sendmail = require('sendmail')(); 

app.post('/appl/email', sendmail()); 

    function sendEmail() { 
     sendmail({ 
     from: '[email protected]', 
     to: '[email protected]', 
     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 패키지를 사용하여이 방법을 얻으려고합니까?

도움을 주시면 감사하겠습니다.

답변

1

귀하의 문제는 귀하가 센드 메일을 사용하는 방식이 아니라 명시적인 경로를 사용하는 방식에 있습니다.

여기 코드 샘플에 나와있는 것과 동일한 오류가 발생했습니다.

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에 대한 사실 것 같은, 그것은 필요로하는 특정 서명이 있습니다. 전달 된 함수는 reqres 인수가 있어야합니다. 선택적으로 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'); 
} 
+0

실수를 지적 해 주셔서 감사합니다. 나는 그것을 바로 잡았고 현재 작동 중이다. –