node-mandrill通过服务器发送邮件

这是一个关于正确使用node-mandrill的新手问题,最有可能在节点本身,因为我仍然试图学习它。 但是由于我看到很多例子直接从客户端使用mandrill的api键,因此揭示它,我想知道它是如何工作时,但在这一点卡住:

我有一个app.js服务公共文件夹…

app.js

var express = require('express'); var mandrill = require('node-mandrill')(API_KEY); var app = express(); app.use(express.static('public')); app.listen(PORT); function sendEmail ( _name, _email, _subject, _message) { mandrill('/messages/send', { message: { to: 'EMAIL', from: [{email: _email , name: _name}], subject: _subject, text: _message } }, function(error, response){ if (error) console.log( error ); else console.log(response); }); } 

…客户端脚本用于收集联系人表单中的信息,并在点击提交button时发送电子邮件。

form.js

 var contactForm = document.getElementById( 'contactForm' ); new stepsForm( contactForm, { onSubmit : function( form ) { // send email var _subject = 'Contact Request'; var _email = contactForm.elements['q4'].value; var _name = contactForm.elements['q5'].value; var _message = contactForm.elements['q6'].value; sendEmail(_name,_email,_subject,_message); } } ); 

你能告诉我什么是缺失/错误? 谢谢。

您不能从客户端调用您的后端function。 您可以使用Jquery进行Ajax调用,如:

 $(document).ready(function(){ $('#contactForm').submit(function(event) { event.preventDefault(); var _subject = 'Contact Request'; var _email = contactForm.elements['q4'].value; var _name = contactForm.elements['q5'].value; var _message = contactForm.elements['q6'].value; $.ajax({ url: '/sendEmail', method: 'post', contentType: 'application/json', data: JSON.stringify({ subject: _subject, email: _email}), success: function(res) { } }) }) }) 

而在你的后端:

 // some lines skipped app.post('/sendEmail', function(req, res) { //do your stuff })