我正在做一个基于Firebase的项目,我需要链接一个服务器端函数,该函数将电子邮件发送到客户端脚本。
这是我的服务器端index.js文件
const functions = require('firebase-functions');
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'xxx@gmail.com',
pass: 'password'
}
});
var mailOptions = {
from: 'xxx@gmail.com',
to: 'xxx@gmail.com',
subject: 'Sending Email using Node.js',
text: 'That was easy!'
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
我想知道如何在html中有一个按钮来调用脚本中的函数,该函数将调用transporter.sendMail。我以前从未接触过Node js,所以请原谅我缺乏知识。
如果这有助于Firebase设置我的文件夹,以按功能分开,则服务器端和客户端文件的公用文件夹
答案 0 :(得分:-1)
首先使用
jQuery
初始化HTML页面,并在提交表单后按如下所示向服务器发送一个Ajax
请求
$(document).ready(function() {
$("#formoid").submit(function(event) {
event.preventDefault();
$.ajax({
url: 'http://xxxxxxx.com/contact', // url where to submit the request
type : "POST", // type of action POST || GET
dataType : 'json', // data type
data : $("#formoid").serialize(), // post data || get data
success : function(result) {
$('#formoid')[0].reset();
},
error: function(xhr, resp, text) {
console.log(xhr, resp, text);
}
})
});
});
在
contact
服务器中创建一个名为NodeJS
的路由,并使用您需要的所有参数来监听联系请求。在以下情况下,我使用express server
和body parser
解析传入请求中的数据
app.post('/contact', (req, res) => {
var transporter = nodemailer.createTransport({
service: "Gmail",
auth: {
user: "xxxxx",
pass: "xxxxx"
}
});
var mailOptions = {
from: req.body.email,
to: 'xxxxx@xx.com',
subject: 'Contact form',
text: 'From: ' + req.body.name + '\n Email: ' + req.body.email + '\nMessage: ' + req.body.msg
};
transporter.sendMail(mailOptions, function (error, info) {
if (error) {
res.status(500).json({
message: "Error",
error: error
})
} else {
res.status(200).json({
message: "Its working",
response: info.response
})
}
});
});
在上述请求中,正在发送
name:as name
,email: as email
和message: as msg