Email 从Firebase webapp发送邮件

Email 从Firebase webapp发送邮件,email,firebase,nodemailer,firebase-hosting,Email,Firebase,Nodemailer,Firebase Hosting,var express=require('express'); var-app=express(); var nodeEmailer=require('nodeEmailer'); var transporter=nodeEmailer.createTransport('smtps://username@gmail.com:password@smtp.gmail.com'); app.get('/sendMail',函数(req,res){ var邮件选项={ 致:'receiver@gmail

var express=require('express');
var-app=express();
var nodeEmailer=require('nodeEmailer');
var transporter=nodeEmailer.createTransport('smtps://username@gmail.com:password@smtp.gmail.com');
app.get('/sendMail',函数(req,res){
var邮件选项={
致:'receiver@gmail.com',
主题:“测试邮件”,
html:“测试邮件”
}
transporter.sendMail(邮件选项、函数(错误、响应){
如果(错误){
res.end(“未发送邮件”);
}
否则{
res.end(“已发送邮件”);
}
});
}).听(9091);

log('正在运行')2019年更新:或者,您可以使用新版本(目前处于测试版)


正如我在评论中提到的,问题是:您的web应用程序是用NodeJS构建的,您试图在静态主机环境()上托管它。但是Firebase也有一个服务,让您可以在NodeJS环境中运行函数。因此,您应该将应用部署到该服务

这真的很容易理解。由于您已经设置了Firebase主机,您只需转到该目录并使用以下命令设置云功能:

firebase init functions
将创建一个名为“functions”的新文件夹,并自动将
index.js
文件添加到该文件夹中。现在,您将在该文件中编写函数(实际上,我们只需要一个函数来发送电子邮件)

因此,为了创建此函数,您不再需要Express。您可以删除它,然后稍微更改index.js文件以添加firebase函数,这样它就会变成:

//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-.cloudfunctions.net/sendMail


替换为您的Firebase项目ID。

看起来您的web应用程序是在NodeJS中开发的,NodeJS是一个在服务器端运行javascript代码的平台。但是Firebase主机是一个静态主机,这意味着javascript将在客户端运行。如果你想在Firebase上托管你的应用程序,你可以使用create a发送邮件。@RosárioPereiraFernandes我想你是这么说的,我只能通过云函数发送邮件。如何使用表单中的电子邮件内容?@AjithRamesh-如果表单是用POST方法提交的,数据将在
req.body
中,如果是GET,则数据将位于
req.query