express - Express 电子邮件服务器 Gatsby
问题描述
嗨,我想从我正在开发的 gatsby 网站给自己发送一封电子邮件。我已尝试遵循本指南
我已经建立了这样的项目:
/client(运行在 8000 端口的 gatsby 站点)
----package.json
server.js(运行在 3000 端口的节点服务器)
----package.json
这是我的 server.s 代码:
require("dotenv").config({
path: `.env`,
})
const port = 3000
const bodyParser = require("body-parser")
const express = require("express")
const nodemailer = require("nodemailer")
const morgan = require('morgan')
const app = express()
app.use(morgan('dev'))
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
const contactAddress = "myemail@gmail.com"
const mailer = nodemailer.createTransport({
service: "Gmail",
auth: {
user: process.env.GMAIL_ADDRESS,
pass: process.env.GMAIL_PASSWORD,
},
})
app.get('/', function (req, res) {
res.send('The server is running...')
})
app.post("/contact", function (req, res) {
console.log('post request')
mailer.sendMail(
{
from: req.body.name,
to: [contactAddress],
subject: "Message from website",
html: req.body.message,
},
function (err, info) {
if (err) {
console.log(err)
return res.status(500).send(err)
} else {
//success
console.log('worked')
res.json({ success: true })
}
}
)
})
app.listen(port, () =>
console.log(`Mail server listening on port ${port}!`)
);
表单动作如下:
<form css={containerStyle} name="contact" method="post" action="http://localhost:3000/contact">
<FormComponents />
</form>
到目前为止,它还没有登录到控制台或发送电子邮件。任何我出错的地方都会有所帮助。谢谢。
解决方案
我解决了。基本上,我不明白 express 是如何工作的——你需要在 express 中包含 cors。并使用axios发送表单数据
在这里回答对我有帮助
推荐阅读
- visual-c++ - 从 32 位迁移 C++ 和 Java 64 位挑战
- docker - 就如何使用 Helm 和 Kubernetes 进行个性化服务设置提供建议
- .net - 序列化带有填充标签的 system.drawing.image 列表
- macos - 意外的头文件:
- windbg - 什么在 .net 应用程序中使用大型 mem_reserve?
- django - django 中的自定义身份验证不起作用
- android - 日期选择器 - 更改所选日期 Android
- node.js - 当代码在本地运行时,为什么在 heroku 中使用 node.js 会给我不同的结果?
- php - 为什么不能将字符串转换为数字
- python - 如何对“groupby”执行操作,例如美元重量等