如何在变量中存储电子邮件并使用node.js

时间:2017-12-28 15:46:29

标签: javascript node.js



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)变量并发送给该人。我的文件夹位于图片下方。 Folder Locations 如何将变量从 assmt.js 变为 index.js(云函数js)。

1 个答案:

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