개발일지
개발일지 47일차
index.ys
2023. 5. 8. 01:51
1. 에러 : 잘못된 이메일로 메일 발송시 서버다운
- sendMail 메소드로 이메일 발송할때, 잘못된 이메일 형식이 입력되었을 때 서버가 다운되는 에러가 발생했다
transporter.sendMail(mailOptions, (error, info) => { // 이메일 발송
res.status(200).json({ "message": `${email}주소로 이메일 발송 성공` })
.console.log('이메일 발송에 성공했습니다: ' + info.response); // 성공
transporter.close()
})
if (!(isValidEmail(email)) || (email.length < 4)) {
res.status(412).json({
errorMessage: "이메일의 형식이 일치하지 않습니다."
})
return
};
해결방법
- 이메일의 유효성을 검사하는 조건문이 메일 발송부분보다 뒤에 있어서 에러가 났을때 서버가 다운 되는 에러가 발생했었다.
- 조건식을 앞으로 옮겨 에러가 발생했을때도 서버가 다운되지 않게 수정하였다.
if (!(isValidEmail(email)) || (email.length < 4)) {
res.status(412).json({
errorMessage: "이메일의 형식이 일치하지 않습니다."
})
return
};
transporter.sendMail(mailOptions, (error, info) => { // 이메일 발송
res.status(200).json({ "message": `${email}주소로 이메일 발송 성공` })
.console.log('이메일 발송에 성공했습니다: ' + info.response); // 성공
transporter.close()
})
2. 에러 : 이메일 유효성검사 에러
- 인증받을 이메일을 입력 후 이메일의 유효성을 정규표현식으로 검사하는 코드를 작성햇다.
function isValidEmail(email) {
const nicknameRegex = /^[a-zA-Z0-9@.]+$/;
return nicknameRegex.test(email);
}
- 아래 조건문에서 이메일의 유효성을 검사하고 유효하지 않을때 res412를 반환하는 조건식을 작성하였는데 이메일에 @와.이 없을때도 true를 반환하여서 이메일이 전송됐다.
if (!(isValidEmail(email)) || (email.length < 4)) {
res.status(412).json({
errorMessage: "이메일의 형식이 일치하지 않습니다."
})
return
};
해결방법
-정규표현식에 @와. 을 무조건 포함하는 정규표현식으로 수정하였다
function isValidEmail(email) {
const nicknameRegex = /^[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z]+$/;
return nicknameRegex.test(email);
}