我在使用AngularJS的模态实例中构建了一个电子邮件表单,其中包含发送电子邮件,收件人电子邮件,主题和电子邮件内容的字段。表单使用输入框和ng模型来跟踪数据。当用户点击此表单上的发送按钮时,我想将模型收集的所有信息发送到服务器以发送电子邮件。
目前,我有一个草稿按钮,当用户点击草稿按钮时,我将模型中收集的所有信息发送给控制器,控制器将其发送到服务,以便我可以重新填充信息,如果用户决定关闭模态实例并稍后发送电子邮件。但是,如果用户点击发送按钮,我将此对象包含所有信息,但不知道如何将其发送到服务器。我对node.js和后端非常新,所以如果你有人能提供一个具体的简短示例供我学习,那就太棒了。
我希望使用我使用npm安装的nodemailer模块。
谢谢!
答案 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