MEAN.JS 联系表

MEAN.JS Contact Form

正在尝试为我的网站创建联系表和反馈表。这是我正在使用的路由和控制器,但是我需要了解我的路由发生了什么以及如何从表单中捕获输入字段在 MEAN.JS:

中实现

route.js:

app.route('/mail').get(mail.createmail);

app/controller.js:

    exports.createmail = function(req, res) {

    var mailOpts, smtpTrans;
    // create reusable transporter object using SMTP transport
    var transporter = nodemailer.createTransport({
        service: 'Gmail',
        auth: {
            user: 'administrator@radleaf.com',
            pass: '34Girls34*goo'
        }
    });

    // NB! No need to recreate the transporter object. You can use
    // the same transporter object for all e-mails

    // setup e-mail data with unicode symbols
    var mailOptions = {
        from: 'Fred Foo ✔ <foo@blurdybloop.com>', // sender address
        to: 'ty@radleaf.com', // list of receivers
        subject: 'Hello ✔', // Subject line
        text: 'Hello world ✔', // plaintext body
        html: '<b>Hello world ✔</b>' // html body
    };

    // send mail with defined transport object
    transporter.sendMail(mailOptions, function (error, info) {
        if (error) {
            console.log(error);
        } else {
            console.log('Message sent: ' + info.response);
        }
    });

 };

不确定如何使用 HTML 视图:

<form action="mail">...</form>

使用 angularJS,您可以删除 action 属性,只需使用 angularJS ngSubmit 指令,并在您的控制器中调用一个函数,该函数现在将使用 $http.get 访问端点.

如果我对问题的理解正确,你是在问如何收集输入到表单中的数据,将该数据发送到 expressJS,然后使用该数据发送出站电子邮件。

如果是,那么这是您的流程:

第 1 步:在视图中创建表单并将其映射到 AngularJS 控制器

<form name="contactForm" data-ng-submit="sendMail()">
Name: <input type="text" data-ng-model="contact_name">
Message: <input type="text" data-ng-model="contact_msg">
<button type="submit">
</form>

第 2 步:在您的 AngularJS 控制器中,使用 $http 请求将您的数据发送到您的 Express Route

$scope.sendMail = function() {
// Simple POST request example (passing data) :
$http.post('/mail', {name: contact_name, msg: contact_msg}).
  success(function(data, status, headers, config) {
    // this callback will be called asynchronously
    // when the response is available
  }).
  error(function(data, status, headers, config) {
    // called asynchronously if an error occurs
    // or server returns response with an error status.
  });
}

第 3 步:使用您的 ExpressJS 路由作为 API 来调用您的 ExpressJS 控制器。 (看起来你已经掌握了这一点)

app.route('/mail').get(mail.createmail);

第 4 步:接收并处理通过 $http 传递的数据 POST

exports.createmail = function(req, res) {
var data = req.body;

现在你可以像这样使用数据了

   var mailOptions = {
        from: data.name, // sender name
        text: data.msg, // plaintext body
    };

MeanJS 0.4.0 也有一个可能有用的 NodeMailer 示例:https://github.com/meanjs/mean/tree/0.4.0