有一个问题,一封空信到达了邮件,即所有动态变量都是未定义的.服务器端和客户端都没有错误.但是,如果我将rec.body输出到控制台,则不会收到传递给请求的数据.
结果如下所示:
正文:{流:未定义,来源:空,长度:空}
API请求如下所示:
const handleSubmitForm = async (e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault();
// Отправка данных на сервер
const response = await fetch('http://localhost:3000/api/sendMail', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
senderEmail: formInputs.email,
name: formInputs.name,
message: formInputs.message,
floortype: selectedFloor,
postcode: formInputs.postcode,
location: formInputs.location,
}),
});
if (response.ok) {
// Обработка успешной отправки
console.log('Письмо успешно отправлено!');
} else {
// Обработка ошибки отправки
console.error('Ошибка при отправке письма');
}
}
下面是API本身的样子:
import { NextApiRequest } from 'next';
import { NextResponse } from 'next/server';
import nodemailer from 'nodemailer';
const transporter = nodemailer.createTransport({
service: "gmail",
auth: {
user: 'romanenkofloors@gmail.com',
pass: '********',
}
});
interface MailData {
senderEmail: string;
name: string;
message: string;
floortype: string;
postcode: string;
location: string;
}
export async function POST(req: NextApiRequest) {
try {
// Explicitly parse the request body as JSON
const { senderEmail, name, message, floortype, postcode, location }: MailData = req.body;
console.log(req)
// Content of the email
const mailOptions = {
from: 'romanenkofloors@gmail.com',
to: 'vovasan2004@gmail.com',
subject: 'Новый запрос от посетителя',
text: `Имя: ${name}\nEmail: ${senderEmail}\nПочтовый индекс: ${postcode}\nГород: ${location}\nТип желаемого покрытия: ${floortype}\nВопрос: ${message}`,
};
await transporter.sendMail(mailOptions);
return NextResponse.json({ success: true });
} catch (error) {
console.error(error);
return NextResponse.json({ success: false, error: 'Ошибка при отправке письма' });
}
}