Til#31. NodeMailer

깡통·2024년 2월 5일
0

요렇게 셋팅하고,

요렇게 시도해 봤는데,

요런 결론이 나왔다.

  • 메서드 이름이 nodemailer.createTransporter이 아니라 nodemailer.createTransport였음.

email이 정의되지 않았다고 한다.

이제는 인증 정보가 부족하다는 에러가 날 괴롭힌다. 왤까?

  • gmail은 보안과 인증절차가 까다로워서 추가적인 설정을 더 해야 한다고 한다(낮은 보안 수준으로 설정 변경). 그래서 일단 네이버 계정으로 바꿔봤는데, 다른 에러가 발생했다.

  • <mr. gpt>
    이 오류는 getaddrinfo EAI_FAIL와 관련이 있어 보입니다. 이 오류는 DNS 조회 실패로 인한 것으로, 주로 호스트 이름 또는 IP 주소의 문제로 발생할 수 있습니다.
    smtp@naver.com는 유효한 호스트 이름이 아닙니다. SMTP 서버의 호스트 이름은 주로 smtp.naver.com과 같이 설정됩니다.(그렇다고 한다.)

  • 찾은거 같다. transporter 객체의 password의 키값 속한 프로퍼티의 key값이 내가 찾아본 자료에서 pass였는데, 그걸 그냥 내 맘대로 password로 바꿔서 일어난 일 같다. 생각해보면 이건 저 객체의 양식을 가진 외부 api와 소통을 하기 위한 api인데, 내가 멋대로 양식을 바꿨으니 못알아 먹었을 만 하다.

  • 잘 작동한다! (뿌듯)

  • Math.floor(Math.random() * 10000 +1) 은 1~ 10,000 사이의 수 중 랜덤한 숫자를 생성해 준다. 그럼 이 숫자는 상수 generatedAuthNumber에 할당되어, info()함수의 generatedAuthNumber 매개변수의 인수로서 전달된다.

  • 이제 인증을 위해 ejs 파일을 만들어 보고 있다.

<기본 준비>
import ejs from 'ejs';
app.use('view engine', 'ejs');
app.set('views', './views');

  • 요렇게 했는데, 이게 <%= ... %> 는 일반적으로 서버 사이드 템플릿 엔진에서 사용되고, 클라이언트 사이드에서는 사용되지 않는다고 한다. 그런데 로그인 인증은 주로 서버 쪽에서 처리하고, 프론트에선 필요하면 번호 입력만 받아서 서버로 넘겨주는 식으로 운영해야 하는데, 내가 아예 프론트에서 처리하려고 하니 이는 바람직하지 않다고 한다.
  • 프론트에서 받은 입력값을 서버에서는 바로 읽지 못한다고 한다. 그래서 서버 사이드 템플릿 엔진에다 프롬트 함수를 써서 벨류값을 바로 전달하는 식의 로직은 짜선 안된다.
profile
코딩하러 온 사람입니다.

0개의 댓글