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