Next js 13 使用自己的 Nodemailer api

问题描述 投票:0回答:1

我正在构建一个需要电子邮件系统的应用程序,我之前在有效的页面/api/电子邮件中构建了它。

因为它变得越来越大,我想在 app/api/email 上为电子邮件构建一个 api。

我不断收到错误:

- error No HTTP methods exported in 'C:\Users\Nodefion\Desktop\Workspace\_Git_REPOS\secforhire\app\api\mail\route.js'. Export a named export for each HTTP method.

主页 应用程序(组)邮件\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;

应用程序 pi\邮件 oute.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/电子邮件。

感谢您的浏览并祝您有美好的一天。

我尝试在不同的论坛上使用人工智能来解决这个问题,但仍然空手而归。

http next.js get nodemailer next.js13
1个回答
0
投票

路由处理程序在应用程序路由器中获取一些更新。 查看文档

要使用如下 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) {}
© www.soinside.com 2019 - 2024. All rights reserved.