Html 我正在使用mandrill&;Node.js。。。我的节点服务器在提交邮件客户端表单时收到一个空的POST请求正文

Html 我正在使用mandrill&;Node.js。。。我的节点服务器在提交邮件客户端表单时收到一个空的POST请求正文,html,node.js,post,http-post,mandrill,Html,Node.js,Post,Http Post,Mandrill,//节点js的服务器端代码 //Dependencies var express = require('express'); var http = require('http'); var bodyParser = require('body-parser'); var path = require('path'); var fs = require('fs'); var multer = require('multer'); var mongo = require('mongoose'); v

//节点js的服务器端代码

//Dependencies
var express = require('express');
var http = require('http');
var bodyParser = require('body-parser');
var path = require('path');
var fs = require('fs');
var multer = require('multer');
var mongo = require('mongoose');
var schema =require('./schema.js');
var done = false;
var cors = require('cors');
var mandrill = require('mandrill-api/mandrill');
//END OF EXTERNAL DEPENDENCIES`
var mandrill_client = new mandrill.Mandrill('Some_Mandrill_API_Tocken');
//Environment Settings For Express Js Server
var app = express();
// all environments
app.set('port', process.env.PORT || 8080);
app.set('views', path.join(__dirname, 'inner_html'));
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));
app.use(cors());
app.use(bodyParser.json());       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({// to support URL-encoded bodies
    extended: true
}));

app.post( '/sendemail', function(req, res){
console.log(req.body);
var _name = 'Anonymous User';
var _email = req.email;
var _subject = 'Query';
var _messsage = req.message;
//implement your spam protection or checks.
var message = {
"text": _messsage,
"subject": "Website Query",
"from_email": _email,
"from_name": _name,
"to": [{
"email": "agniruddra.r@gmail.com",
"name": "Admin"
}],
"important": false,
"track_opens": true,
"track_clicks": true,
"auto_text": true
};


mandrill_client.messages.send({"message": message}, function(result) {
console.log(message);
console.log(result);
res.json({'msg' : 'Your Mail sent to Faculty Successfully'});
}, function(e) {
// Mandrill returns the error as an object with name and message keys
console.log('A mandrill error occurred: ' + e.name + ' - ' + e.message);
// A mandrill error occurred: Unknown_Subaccount - No subaccount exists with the id 'customer-123'
});
});
下面是我的html表单主体

<div id="myModal" class="modal fade">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                <h4 class="modal-title">Email Faculty</h4>
            </div>
            <form class="rqust_mail" method="POST" action="/sendemail">
            <div class="modal-body">
                    <div class="form-group">
                        <label for="recipient-name" class="control-label">Email:</label>
                        <input type="text" class="form-control" id="email" name="email">
                    </div>
                    <div class="form-group">
                        <label for="message-text" class="control-label">Message:</label>
                        <textarea class="form-control" id="message" name="message"></textarea>
                    </div>                    
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                <input type="submit" class="btn btn-primary send_mail" name="Send" value="Send"/>
            </div>
            </form>

            <script type="text/javascript">
                /*$('.send_mail').click(function(){                        
                    $.ajax({
                    type: "POST",
                    data: data,
                    contentType: "application/json",
                    dataType:"json",
                    url: "https://mywebsite.com/sendemail",                 
                    success:function(data){
                            console.log(JSON.stringify(data));
                            //$('.rqust_mail input').reset();
                            }
                    });
                });*/
            </script>
        </div>
    </div>
</div>

×
电子邮件教员
电邮:
信息:
取消
/*$('.send_mail')。单击(函数(){
$.ajax({
类型:“POST”,
数据:数据,
contentType:“应用程序/json”,
数据类型:“json”,
url:“https://mywebsite.com/sendemail",                 
成功:功能(数据){
log(JSON.stringify(data));
//$('.rqust_邮件输入').reset();
}
});
});*/
我尝试了ajax和普通HTMLHTTPPOST请求。这两个(HTML和AJAX POST)请求主体都包含一个空json

请告诉我我的代码有什么问题


提前感谢。

我在浏览器脚本中没有看到它将表单数据收集到
数据中的任何地方

无论如何,试着使用
multer
,只使用常规的POST(而不是AJAX)


然后,您可以在post处理程序中查看
req.body

使用
req.body.email
而不是
req.email
。使用app.use(express.bodyParser())

我认为解析器存在一些编码异常。。。。我刚刚删除了
contentType:“application/json”,代码运行良好。。。。。仍然不知道它不能与正常HTTP POST一起工作的原因…可能是相同的编码异常…

感谢您的回复。。。。我已经为文件上传目的配置了multer。我只在这里发布了node.js服务器代码的一部分。即使将multer用作中间件,也会出现同样的错误。但是,Ajax部分可能有故障。我是Ajax的新手。但是,我认为正常的HTTPPOST请求应该可以工作,而在我的情况下,这种情况不会发生。你能突出说明原因吗???没有实际代码很难猜测。可能在主体解析器干扰之前使用一些app.use。我会拿出任何应用程序。使用你不需要的,并开始削减你的代码,直到它工作。消除过程。或者,从一个例子开始,让它工作起来,然后逐渐加入真正的代码。用您试图演示问题的实际代码发布一个简单的示例。我还注意到您在
Post
处理程序中编写的
req.email
是指
req.body.email
var express = require('express')
var multer  = require('multer')

var app = express()
app.use(multer({ dest: './uploads/'}))