문의 메일 보내기 구현(Next.js + nodemailer)

Tony·2023년 10월 18일
0

react

목록 보기
80/86
post-custom-banner

Next.js로 블로그 같은 것을 만든 뒤 contact 메일을 보낼 수 있도록 구성을 해보자

개요

  • app/api에서 이메일 요청을 받는 API를 만든다
  • 메일을 보내고 응답을 보내준다

gmail에서 app password 생성

  • Google Account > Security > Signing in to Google
    • 2-Step Verification 설정하기 > App password

nodemailer로 메일 보내기

import nodemailer from "nodemailer";

export type EmailData = {
  from: string;
  subject: string;
  message: string;
};

const transporter = nodemailer.createTransport({
  host: "smtp.gmail.com",
  port: 465,
  secure: true, // true for 465, false for other ports
  auth: {
    user: process.env.AUTH_USER,
    pass: process.env.AUTH_PASS,
  },
});

export async function sendEmail({ subject, from, message }: EmailData) {
  const mailData = {
    to: process.env.AUTH_USER,
    subject: `[BLOG] ${from}: ${subject}`,
    from,
    html: `
    <h1>${subject}</h1>
    <div>${message}</div>
    <br/>
    <p>보낸 사람: ${from}</p>
    `,
  };

  const info = await transporter.sendMail(mailData);
  console.log("Message sent: %s", info.messageId);

  return info;
}

참고

profile
움직이는 만큼 행복해진다
post-custom-banner

0개의 댓글