minimimi
[NextJS] nodemailer 이용하여 email 보내기 본문
반응형
구글 계정 관리 > 보안 > Google에 로그인하는 방법 > 2단계 인증 > 앱 비밀번호
생성된 앱 비밀번호를 .env
에 MAILER_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,
});
}
}
}
반응형
'프로그래밍 공부 > javascript & typescript' 카테고리의 다른 글
[Javascript & Typescript] Textarea의 값을 엔터키로 제출할 때 엔터가 입력되는 현상 해결 (0) | 2023.04.13 |
---|---|
Content Security Policy (CSP) 컨텐츠 보안 정책 - eval() (0) | 2023.03.18 |