首页 > 解决方案 > 使用 Express 和 Sendgrid 发送电子邮件

问题描述

我刚开始,我知道这个问题可能看起来微不足道。我创建了我网站的主页(index.html),里面有一个表格。每次提交表单时,我希望能够向我的电子邮件地址发送一封包含信息的自动电子邮件。

为此,我使用了 Node 和 Express,但我不清楚一件事。当我去测试电子邮件的发送时,一切正常,但服务器在端口 5000 上,而 index.html 页面在端口 5500 上。

如果我在以下 url 上测试表单 --> localhost://5000 一切正常,而如果我从相对于我的索引页面的 url 测试表单 --> localhost://5500 它会将我重定向到默认错误 405页。

我认为存在与 express 路径相关的问题,有人可以帮助我修改 server.js 文件,以使表单正常工作(在 index.html 页面内)。

这是 server.js 文件的代码:

// Send email after that form is submitted
const express = require("express");
const app = express();
const path = require("path");
const router = express.Router();

// Import sendEmail function from utils/sendEmail
const sendEmail = require("./utils/sendEmail");

// Middleware
app.use(express.urlencoded({ extended: false }));

// view engine setup
app.set("view engine", "html");

// Use Static folder
app.use("/public", express.static(path.join(__dirname, "public")));
app.use("/public", express.static(path.join(__dirname + "/css/style.css")));
app.use("/public", express.static(path.join(__dirname + "/fonts/fonts.css")));

router.get("/", function (req, res) {
  res.sendFile(path.join(__dirname + "/views/index.html"));
  //__dirname : It will resolve to your project folder.
});

//add the router
app.use("/", router);
app.listen(process.env.port || 5500);

console.log("Running at Port 5500");

app.post("/sendemail", (req, res) => {
  const { nome, email, telefono, data, deadline, messaggio, budget, gdpr } =
    req.body;

  const from = "Irene@liberamente.site";
  const to = "irenetestarella.it@gmail.com";

  const subject = "Nuovo Prospect";

  const output = `
  <p> Un nuovo prospect ha appena compilato il form sul sito Liberamente </p>

  <h3>Dettagli prospect: </h3>
  <ul>
      <li>Nome: ${nome} </li>
      <li>Email: ${email} </li>
      <li>Telefono: ${telefono} </li>
      <li>Data ed ora preferita: ${data} </li>
      <li>Deadline: ${deadline} </li>
      <li>Messaggio: ${messaggio} </li>
      <li>Budget: ${budget} </li>
      <li>Consenso informato GDPR: ${gdpr} </li>
  </ul>
  `;

  sendEmail(to, from, subject, output);
  // res.redirect("/");
  res.redirect("/");
});

这是我的文件夹结构的屏幕截图:文件夹

server.js 页面服务器.js

index.html 页面索引.html

标签: javascriptnode.jsexpresssendgrid

解决方案


推荐阅读