2

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

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

我正在寻找使用我使用 npm 安装的 nodemailer 模块。

谢谢!

4

2 回答 2

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
});

在 Angular 部分,就像你写了一个服务一样,你可以创建一个 Angular 工厂来调用这个 REST 端点。

例如:

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

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

于 2014-09-02T03:41:56.663 回答
0

角代码:

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'); });

要获得工作演示,请转到此处

于 2019-05-14T04:42:39.793 回答