javascript - 无法从 Nodemailer 联系表单发送电子邮件
问题描述
我在联系表单中引入了一些额外的输入字段。因此,联系表格已停止工作。单击 SEND 按钮后,SENDING 消息一直显示。我试图诊断问题的根源。CORS failed 出现在浏览器控制台中。没有错误信息或信息发送成功。以前它工作正常并已发送消息。该表单是在 React.js 和 Nodemailer 中创建的。我应该在哪里寻找问题的根源?
import React, { useState } from "react";
import Minimal5 from '../img/minimal5.jpg';
import Minimal4 from '../img/minimal4.jpg';
import {FaFacebookSquare, FaInstagramSquare, FaPinterestSquare } from "react-icons/fa";
const ContactForm = () => {
const [status, setStatus] = useState("Submit");
const handleSubmit = async (e) => {
e.preventDefault();
setStatus("Sending...");
const { name, email, subject, business, datetime, launch, message } = e.target.elements;
let details = {
name: name.value,
email: email.value,
subject: subject.value,
business: business.value,
datetime: datetime.value,
launch: launch.value,
message: message.value
};
let response = await fetch("http://localhost:5000/contact", {
method: "POST",
headers: {
"Content-Type": "application/json;charset=utf-8",
},
body: JSON.stringify(details),
});
setStatus("Submit");
let result = await response.json();
alert(result.status);
};
return (
<div className="form-container">
<div className="about-image contact-form">
<img src={Minimal5} alt="Minimal5" />
<p className="about-more">I'd love to hear from you! I aim to answer all emails whithin my normal business hours of M-F, 9-4pm.</p>
<p className="about-more">Use the form below or email me at office@delightart.co</p>
<ul>
<li><a href="https://facebook.com/delightartco"><FaFacebookSquare color="#9D7C5E"/></a></li>
<li><a href="https://facebook.com/delightartco"><FaInstagramSquare color="#9D7C5E"/></a></li>
<li><a href="https://pinterest.com/delightartco30"><FaPinterestSquare color="#9D7C5E"/></a></li>
<li><span className="signature">Delightartco</span></li>
</ul>
</div>
<form onSubmit={handleSubmit} className="contact-form">
<h2>CONTACT</h2>
<input type="text" id="name" placeholder="Full name" required/><br/>
<input type="email" id="email" placeholder="Email" required/><br/>
<input type="text" id="subject" placeholder="Subject" required/><br/>
<input type="text" id="business" placeholder="What does your business do?" required/><br/>
<input type="time-local" id="datetime" placeholder="Your timezone" required/><br/>
<input type="text" id="launch" placeholder="What is your ideal launch date?" required/><br/>
<textarea id="message" placeholder="Tell me more about your project" cols="30" rows="10" required></textarea><br/>
<button type="submit" className="submit" value="Send Message">{status}</button>
</form>
</div>
);
};
export default ContactForm;
export function Design() {
return (
<div className="questions">
<div className="questions-img">
<img id="kuki" src={Minimal5} alt="Minimal5" />
<img id="winnie" src={Minimal4} alt="Portfolio" />
</div>
<div className="questions-text">
<h2 className="blacker-font">Have questions? Check our: </h2>
<h3>Design services</h3>
<h3>Process</h3>
<h3>Pricing</h3>
</div>
</div>
);
};
index.js
const express = require("express");
const router = express.Router();
const cors = require("cors");
const nodemailer = require("nodemailer");
const app = express();
app.use(cors());
app.use(express.json());
app.use("/", router);
app.listen(5000, () => console.log("Server Running"));
const contactEmail = nodemailer.createTransport({
host: 'smtp.titan.email ',
port: 465,
secure: true,
auth: {
user: "email@email.com",
pass: "******"
}
});
contactEmail.verify((error) => {
if (error) {
console.log(error);
} else {
console.log("Ready to Send");
}
});
router.post("/contact", (req, res) => {
const name = req.body.name;
const email = req.body.email;
const subject = req.body.subject;
const business = req.body.business;
const datetime = req.body.datetime;
const launch = req.body.launch;
const message = req.body.message;
const mail = {
from: email,
to: 'office@delightart.co',
subject: 'Contact Form Submission',
html: `<p>Name: ${name}</p>
<p>Email: ${email}</p>
<p>Subject: ${subject}</p>
<p>Business: ${business}</p>
<p>Your timezone: ${datetime}</p>
<p>Launch date: ${launch}</p>
<p>Message: ${message}</p>`,
};
contactEmail.sendMail(mail, (error) => {
if (error) {
res.json({ status: "ERROR" });
} else {
res.json({ status: "Message Sent" });
}
});
});
解决方案
推荐阅读
- c++ - 为不同类型实现相同的功能
- javascript - 如何使用 GraalVM 从 Java 访问 JS 导出的模块对象?
- php - 时区转换在 PHP 中多花一小时
- javascript - 如何在创建过程中使用 Javascript 中的循环将对象添加到数组中?
- outlook - Outlook VSTO 插件 - 在 OLK 规则之前处理 MailItem
- r - 使用 R 将 data.frame 转换为基于数据框列之一的字符列表
- oracle - PL/SQL VARCHAR2 变量在内存中的大小
- java - AWS Local DynamoDB 请求中包含的安全令牌无效
- php - 来自php文件的正确格式的多维数组未在jquery ajax函数中解析
- android - 如何删除三个电话号码之间的空格和破折号并转换为列表