var express = require('express');
var app =  express();
var nodemailer=require('nodemailer');

var transporter = nodemailer.createTransport('smtps://username@gmail.com:password@smtp.gmail.com');
app.get('/sendMail', function(req,res){
	var mailOptions={
		to: 'receiver@gmail.com',
		subject: 'Test Mail',
		html: 'Testing the Mail'
	}
	transporter.sendMail(mailOptions,function(err,response){
		if(err){
			res.end('Mail not sent');
		}
		else{
			res.end('Mail sent');
		}
	});
}).listen(9091);

console.log('This is running');


我正在开发一个Firebase Web应用程序。我需要通过网络应用发送电子邮件。我看了一些教程,找到了一些代码。使用上面的代码,我能够发送电子邮件。它在端口 9091 中运行。当地址栏具有 www.mywebsite.com/sendMail 时,将发送该消息。但是,当我将此页面托管到Firebase时,此代码需要进行哪些更改,端口号是否必须更改?请帮助在我的Web应用程序中实现此代码。

最佳答案

更新2019:或者,您可以使用新的Trigger Email Firebase Extension(当前为Beta)。

正如我在评论中提到的那样,问题是:您的Web应用程序是使用NodeJS构建的,并且您试图将其托管在静态主机环境(Firebase Hosting)上。但是Firebase还具有Cloud Functions-一种服务,可让您在NodeJS环境上运行功能。因此,您应该将应用程序部署到该服务。

Get Started with Cloud Functions真的很容易。而且,由于您已经设置了Firebase托管,因此只需使用以下命令即可转到该目录并设置Cloud Functions:

firebase init functions

将创建一个名为“功能”的新文件夹,并将index.js文件自动添加到该文件夹​​。现在,这是您要编写函数的文件(实际上,我们只需要1个函数triggered by HTTP来发送电子邮件)。

因此,为了创建此功能,您将不再需要Express。您可以将其删除,然后稍稍更改index.js文件以添加firebase-functions,因此它将变为:
//var express = require('express'); No longer needed
//var app =  express(); No longer needed
var nodemailer=require('nodemailer');
const functions = require('firebase-functions');

var transporter = nodemailer.createTransport('smtps://username@gmail.com:password@smtp.gmail.com');

exports.sendMail = functions.https.onRequest((req, res) =>{
    var mailOptions={
        to: 'receiver@gmail.com',
        subject: 'Test Mail',
        html: 'Testing the Mail'
    }
    transporter.sendMail(mailOptions,function(err,response){
        if(err){
            res.end('Mail not sent');
        }
        else{
            res.end('Mail sent');
        }
    });
});

现在,当您要发送消息时,可以使用以下URL:https://us-central1-<project-id>.cloudfunctions.net/sendMail
用您的Firebase项目ID替换<project-id>

关于email - 从Firebase Webapp发送邮件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47980573/

10-12 03:24