将AngularJS表单发送到NodeMailer以发送电子邮件

时间:2014-09-02 01:26:58

标签: javascript node.js angularjs email nodemailer

我在使用AngularJS的模态实例中构建了一个电子邮件表单,其中包含发送电子邮件,收件人电子邮件,主题和电子邮件内容的字段。表单使用输入框和ng模型来跟踪数据。当用户点击此表单上的发送按钮时,我想将模型收集的所有信息发送到服务器以发送电子邮件。

目前,我有一个草稿按钮,当用户点击草稿按钮时,我将模型中收集的所有信息发送给控制器,控制器将其发送到服务,以便我可以重新填充信息,如果用户决定关闭模态实例并稍后发送电子邮件。但是,如果用户点击发送按钮,我将此对象包含所有信息,但不知道如何将其发送到服务器。我对node.js和后端非常新,所以如果你有人能提供一个具体的简短示例供我学习,那就太棒了。

我希望使用我使用npm安装的nodemailer模块。

谢谢!

2 个答案:

答案 0 :(得分:4)

在节点端,您可以创建一个REST端点,以便从服务器接收POST请求,以便在模式框中提交电子邮件表单。如果您有快速服务器,REST端点将如下所示。

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

在角度部分,就像您编写了一个服务一样,您可以创建一个角度工厂来调用此REST端点。

例如:

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

其中myApp是您的角度模块,emailData是您要发送到服务器的emailForm数据(它将发布在请求正文中)

答案 1 :(得分:1)

角度代码:

angular.module('sendmailApp', [])
.controller('MailController', function ($scope,$http) {
    $scope.loading = false;
    $scope.send = function (mail){
        $scope.loading = true;
        $http.post('/sendemail', {
            to: mail.to,
            subject: 'Message from AngularCode',
            text: mail.message
        }).then(res=>{
            $scope.loading = false;
            $scope.serverMessage = 'Email sent successfully';
        });
    }

})

Node.js代码:

let express = require('express'),
app = express(),
bodyParser = require('body-parser'),
nodemailer = require("nodemailer"),
server = require('http').Server(app);

const OTP_EMAIL_CONFIG= {     
"host": 'smtp.gmail.com',     
"port": 465,     
"secure": true,     
"auth": {         
"user": 'enter gmail account',         
"pass": 'gmail password...'     
} };

let mailModule = nodemailer.createTransport(OTP_EMAIL_CONFIG);
app.use(express.static(__dirname + '/client'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.get('/',function(req,res){
    res.send('hello world!');
}) // Method to send email....
app.post('/sendemail',function(req,res){
    console.log(req.body,'request');
     var mailOptions = {
        from: '"jsonworld " enter gmail account which you want to use for sending email',         
to: req.body.to,         
subject: "mail sending with angularjs and nodejs",  
       text: "Congratulations! mail is sending properly now."     
};     
mailModule.sendMail(mailOptions);     
res.status(200).send('Mail sent successfully'); })
server.listen(3003,function(){ console.log('server listening on port: 3003'); });

要获取工作演示go here

相关问题