Next js 13使用自己的API用于nodemailer

vngu2lb8  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(83)

我正在构建一个需要电子邮件系统的应用程序,我之前在pages/API/email中构建了它。
由于它变得越来越大,我想在app/API/email上为电子邮件构建一个API。
我一直得到一个错误:
- error No HTTP methods exported in 'C:\Users\Nodefion\Desktop\Workspace\_Git_REPOS\test\app\api\mail\route.js'. Export a named export for each HTTP method.
主页app(group)\email\page.jsx

"use client"
import React, { useState } from 'react';

function HomePage() {
  const [response, setResponse] = useState(null);

  const sendEmail = async () => {
    try {
      const res = await fetch('http://localhost:3000/api/mail', { method: 'GET' });
      const data = await res.json();
      setResponse(data.message);
    } catch (error) {
      console.error('Error sending email:', error);
    }
  };

  return (
    <div>
      <h1>Welcome to My App</h1>
      <p>Click the button to send an email:</p>
      <button onClick={sendEmail}>Send Email</button>
      {response && <p>{response}</p>}
    </div>
  );
}

export default HomePage;

app\api\mail\route.js

import { nodemailer } from 'nodemailer';
export default async (req, res) => {
  if (req.method === 'GET') {
    const smtpConfig = {
      host: 'smtp.hostinger.com',
      port: 465,
      secure: true,
      auth: {
        user: '[email protected]',
        pass: 'password',
      },
    };

    const transporter = nodemailer.createTransport(smtpConfig);

    const mailOptions = {
      from: '[email protected]',
      to: '[email protected]',
      subject: 'Test Email',
      text: 'This is a test email sent from nodemailer.', 
    };

    try {

      await transporter.sendMail(mailOptions);
      res.status(200).json({ message: 'Email sent successfully!' });
    } catch (error) {
      console.error('Error sending email:', error);
      res.status(500).json({ message: 'Error sending email' });
    }
  } else {
    res.status(405).end(); // Method Not Allowed for non-GET requests
  }
};

出于安全原因,我更改了凭据,因此我尝试在/page/API/email上使用不同的代码,并且成功了。
我仍然是Next.js的新手,但我有些困惑,并不断在错误中出现。
我已经看过互联网,但总是有使用的东西,我不想要的,那就是网页/API/电子邮件。
感谢您的关注,祝您有美好的一天。
我试着在不同的论坛上寻找使用人工智能,仍然保持空手而归。

gstyhher

gstyhher1#

路由处理程序在应用程序路由器中获得一些更新。See the docs
要创建路由处理程序,请使用API方法导出named函数,如下所示:

export async function GET(req, context) {}
export async function POST(req, context) {}
export async function PATCH(req, context) {}
export async function PUT(req, context) {}
export async function DELETE(req, context) {}
export async function OPTIONS(req, context) {}

相关问题