首页 > 解决方案 > 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>

到目前为止,它还没有登录到控制台或发送电子邮件。任何我出错的地方都会有所帮助。谢谢。

标签: expressgatsbynodemailer

解决方案


我解决了。基本上,我不明白 express 是如何工作的——你需要在 express 中包含 cors。并使用axios发送表单数据

在这里回答对我有帮助


推荐阅读