const functions = require('firebase-functions');
var nodemailer = require('nodemailer');
var transporter=nodemailer.createTransport('smtps://username@gmail.com:password@smtp.gmail.com');
exports.sendMail=functions.https.onRequest((req,res)=>{
var mailOptions={
to: 'sender@gmail.com',
subject: 'Test Mail',
html: 'Testing with Node.js'
}
transporter.sendMail(mailOptions,function(err,response){
if(err)
{
res.send('Mail not sent');
console.log(err);
}
else{
res.send('Mail sent');
}
});
});

我希望随着时间的推移向各个人发送电子邮件。我想动态更改此代码中的到:地址。那么如何从另一个javascript文件中获取特定的(sendermailid)变量并发送给该人。我的文件夹位于图片下方。 如何将变量从 assmt.js 变为 index.js(云函数js)。
答案 0 :(得分:0)
您需要设置一个正在监听我们其他JS应用程序的快速服务器:
var express = require('express');
var app = express();
现在您可以从指定端口上的其他应用程序收听:
var port = process.env.PORT || 8080;
app.listen(port);
console.log("App listening on port " + port);
最后,您必须拦截http post请求以发送您的邮件并从请求中获取用户信息:
app.post('/api/sendmail', function(req, res) {
var mail = {
from: req.body.user.emailFrom,
to: req.body.user.emailTo,
subject: "your subject",
html: "<p>email body</p>"
}
transporter.sendMail(mail, function(error, response){
if(error){
console.log("Error!");
console.log(error);
res.send(JSON.stringify(error));
}else{
res.send(JSON.stringify(response));
console.log("Success!")
transporter.close();
}
}
您的服务器现已准备好,您可以通过以下方式启动它:
node serverName.js
在你的其他js文件(assmt.js)中,你发送带有参数的http请求:
send(user : User) {
let body = {user};
this.httpClient.post('http://localhost:8080/api/sendconge', body)
.subscribe(function(data) {
console.log(data);
});
}