회원 등록 시, 이메일 인증을 하는 플로우가 필요했다.
가장 많이 쓴다는 nodemailer을 사용하기로 했다.
예제를 따라하니 gmail 계정 연동하기까지는 참 쉬웠다.
문제는 보내는 사람의 이메일 주소가 회사 계정이어야된다는 점이었다.
왜 이런 예제는 없지요????????????? 하루종일 삽질을 했다.
나와 같은 고민을 하는 사람들을 위해 글을 남긴다.
// 회사 계정이 abc.co.kr 이라고 가정
// transporter 생성
let transporter = nodemailer.createTransport({
// host: "mail.회사.계정.입력" *** mail. <-요게 핵심이었다!
host: "mail.abc.co.kr",
// 보안 무시
port: 587,
// 회사 도메인 내 계정 및 비밀번호
auth: {
user: "myid@abc.co.kr",
pass: "mypassword,
},
// 서명받지 않은 사이트의 요청도 받겠다.
tls: {
rejectUnauthorized: false
}
});
// 메일 관련 옵션
let mailOptions = {
// 발송 메일 주소 (위에서 작성한 회사 계정 아이디)
from: "myid@abc.co.kr",
// 수신 메일 주소
to: "receiverid@domain.com",
// 제목
subject: "인증 메일입니다.",
// 인증 URL
html: `<p>아래의 링크를 클릭하시면 인증이 완료됩니다.</p>
<a href='http://localhost:3001/auth?etc'>인증하기</a>`,
};
// 메일 보내기
transporter.sendMail(mailOptions, function (err, info) {
if (err) {
// 메일 보내기 에러 발생 시, 콘솔 찍어보기
console.log("메일보내기 에러쓰");
console.log(err);
} else {
// 성공했다!
console.log("Email sent: " + info.response);
}
});
-첫 삽질일기 끝-
감사합니다. 참고가 되었습니다.