Sending AngularJS form to NodeMailer to send email

2019-02-27 03:15发布

问题:

I have a built an email form in a modal instance using AngularJS that contains the field sending email, recipient email, subject, and email content. The form uses input boxes and ng-models to keep track of the data. When the user hits the send button on this form, I would like to send all of the information collected by the models to the server to send an email.

Currently, I have a draft button and when the user hits the draft button, I send all of the information collected in the models to a controller who sends it to a service so that I can repopulate the information if the user decides to close the modal instance and send the email later. However, if the user hits the send button, I have this object with all of the information but don't know how to send it to the server. I'm very new to node.js and backend in general so if you someone could provide a concrete short example for me to learn from that would be great.

I'm looking to use the nodemailer module which I have installed using npm.

Thanks!

回答1:

At the node side you can create a REST end point in order to recieve a POST request from the server for the form submission of email in the modal box. The REST end-point will look like this if you have an express server.

var express = require('express');
var router = express.Router();
var app = express();
app.post('/postEmail',function(req,res){
    //Your NodeMailer logic comes here
});

In the angular part, just like you have written a service, you can create an angular factory to invoke this REST end point.

For example:

myApp.factory('postEmailForm',['$http',function($http){
   return {
     postEmail: function(emailData,callback){
       $http.post("/postEmail/", emailData).success(callback);  
     }
   }
}]);

where myApp is your angular module, emailData is the emailForm data which you want to send to the server (it will be posted in the body of the request)