我會(huì)說(shuō)問(wèn)題與這個(gè)問(wèn)題有關(guān)。
你最后兩個(gè)return NextResponse...
調(diào)用在transporter.sendMail()
回調(diào)內(nèi)部,所以它們不會(huì)從POST()
函數(shù)中返回。
利用Nodemailer的返回promise的能力,而不是使用回調(diào)函數(shù)...
try { await transporter.sendMail(mailOptions); return NextResponse.json( { message: "郵件發(fā)送成功!" }, { status: 200 }, ); } catch (err) { return NextResponse.json({ message: err.toString() }, { status: 500 }); }
另一種方法是將Nodemailer的回調(diào)轉(zhuǎn)換為promise,盡管在我看來(lái)這樣做不夠簡(jiǎn)潔
return new Promise((resolve) => { transporter.sendMail(mailOptions, (err) => { const status = err ? 500 : 200; const message = err?.toString() ?? "郵件發(fā)送成功!"; resolve(NextResponse.json({ message }, { status })); }); });