将表单数据邮寄到我的收件箱的应用程序在Firebase上无法正常运行
我想我在这里错过了很简单的东西。我有一个简单的单页node.js应用程序,它使用nodemailer将任何表单数据通过电子邮件发送到我的收件箱。
我的index.js文件:
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var nodemailer = require('nodemailer');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: '[email protected]',
pass: 'mypassword'
}
});
app.use(express.static('public')); //public folder with my html files
app.get('', function (req, res) {
res.sendFile(__dirname + "/");
})
app.post('/', function (req, res) {
response = {
name: req.body.name,
email: req.body.email,
message: req.body.message
};
var mailClient = {
from: '[email protected]',
to: '[email protected]',
subject: `Message from ${response.name}`,
text: 'MyMessage'
};
transporter.sendMail(mailClient, function (error, info) {
if (error) {
console.log(error); //not happening
} else {
res.redirect("/success.html"); //also not happening
}
});
})
var server = app.listen(80, function () {
var host = server.address().address
var port = server.address().port
console.log("App listening at http://%s:%s", host, port)
})
当我在我的本地机器上使用npm start
在根目录中运行它时,该应用程序在localhost
上运行完全正常。 Nodemailer正常工作;当我提交时,我的表单数据会通过电子邮件发送给我自己,然后我会被重定向到我的成功页面。
但是,当我将其部署到Firebase时,似乎nodemailer部分不起作用。页面加载我的静态文件,但当我尝试通过表单提交任何内容时,页面只是刷新(就像你有一个带有HTML的提交按钮),而不是重定向到我的成功页面和电子邮件数据。
我的代码中是否需要更改以使其与firebase一起使用?
编辑 - 没有日志:
回答如下:Google需要付费帐户才能使用“出站网络”。免费套餐不允许您拨打外拨电话。这包括将邮件发送到远程邮件服务器(例如向Yahoo,Gmail或Outlook帐户发送电子邮件)。
See their pricing page for more info.
寻找“出站网络”。
如果你想利用Gmail的API,你仍然可以使用nodemailer
和firebase功能,实现你想要的并保留在Free Tier上。 A fully working example is already available in the firebase-samples
repository!我想强调链接教程提到的内容,即Gmail确实有一个你应该注意的email sending quota。
将表单数据邮寄到我的收件箱的应用程序在Firebase上无法正常运行
我想我在这里错过了很简单的东西。我有一个简单的单页node.js应用程序,它使用nodemailer将任何表单数据通过电子邮件发送到我的收件箱。
我的index.js文件:
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var nodemailer = require('nodemailer');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: '[email protected]',
pass: 'mypassword'
}
});
app.use(express.static('public')); //public folder with my html files
app.get('', function (req, res) {
res.sendFile(__dirname + "/");
})
app.post('/', function (req, res) {
response = {
name: req.body.name,
email: req.body.email,
message: req.body.message
};
var mailClient = {
from: '[email protected]',
to: '[email protected]',
subject: `Message from ${response.name}`,
text: 'MyMessage'
};
transporter.sendMail(mailClient, function (error, info) {
if (error) {
console.log(error); //not happening
} else {
res.redirect("/success.html"); //also not happening
}
});
})
var server = app.listen(80, function () {
var host = server.address().address
var port = server.address().port
console.log("App listening at http://%s:%s", host, port)
})
当我在我的本地机器上使用npm start
在根目录中运行它时,该应用程序在localhost
上运行完全正常。 Nodemailer正常工作;当我提交时,我的表单数据会通过电子邮件发送给我自己,然后我会被重定向到我的成功页面。
但是,当我将其部署到Firebase时,似乎nodemailer部分不起作用。页面加载我的静态文件,但当我尝试通过表单提交任何内容时,页面只是刷新(就像你有一个带有HTML的提交按钮),而不是重定向到我的成功页面和电子邮件数据。
我的代码中是否需要更改以使其与firebase一起使用?
编辑 - 没有日志:
回答如下:Google需要付费帐户才能使用“出站网络”。免费套餐不允许您拨打外拨电话。这包括将邮件发送到远程邮件服务器(例如向Yahoo,Gmail或Outlook帐户发送电子邮件)。
See their pricing page for more info.
寻找“出站网络”。
如果你想利用Gmail的API,你仍然可以使用nodemailer
和firebase功能,实现你想要的并保留在Free Tier上。 A fully working example is already available in the firebase-samples
repository!我想强调链接教程提到的内容,即Gmail确实有一个你应该注意的email sending quota。