minimimi

[NextJS] nodemailer 이용하여 email 보내기 본문

프로그래밍 공부/javascript & typescript

[NextJS] nodemailer 이용하여 email 보내기

99mini 2023. 10. 22. 20:33
반응형

구글 계정 관리 > 보안 > Google에 로그인하는 방법 > 2단계 인증 > 앱 비밀번호

생성된 앱 비밀번호를 .envMAILER_AUTH_PASS 로 저장

내 구글 계정은 MAILER_AUTH_USER 에 저장

// .env

MAILER_AUTH_USER=test@gmail.com
MAILER_AUTH_PASS=phfrwscwiwdfhxqt

import { NextRequest, NextResponse } from "next/server";

import nodemailer from "nodemailer";

const transporter = nodemailer.createTransport({
  host: "smtp.gmail.com",
  port: 465,
  secure: true,
  auth: {
    user: process.env.MAILER_AUTH_USER,
    pass: process.env.MAILER_AUTH_PASS,
  },
});

const sendEmail = async (from: string, subject: string, message: string) => {
  const mailData = {
    to: process.env.MAILER_AUTH_USER,
    subject: `[사이트이름] ${subject}`,
    from: from,
    html: `
    <h1>${subject}</h1>
    <div>${message}</div>
    </br>
    <p>보낸사람 : ${from}</p>
    `,
    //    attachments 옵션으로 첨부파일도 전송 가능함
    //    attachments : [첨부파일]
  };

  return transporter.sendMail(mailData);
};
export async function POST(request: NextRequest) {
  if (request.method === "POST") {
    const { title, email, message } = await request.json();

    try {
      const res = await sendEmail(email, title, message);
      return NextResponse.json({
        status: 200,
        message: "email send sucess",
        data: res,
      });
    } catch (error) {
      return NextResponse.json({
        status: 500,
        message: "email send fail",
        data: error,
      });
    }
  }
}
반응형