개발일지

개발일지 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);
   }