
다음 회원가입 시 사용자 인증을 통해 계정을 등록하는 방법입니다.

이메일 입력칸 input에 onChange 이벤트 핸들러를 추가했습니다.
사용자가 값을 입력할 때마다 formData 상태를 업데이트합니다.

핸들러를 통해 업데이트된 사용자의 이메일은 formData.email에 저장됩니다.

다음 파이썬 /sendEmail api 포트로 이메일과 시크릿 코드를 보내 이메일을 요청합니다.

파이썬 코드를 살펴보겠습니다.
1.@app.route(‘/sendEmail’, methods=[‘POST’])
- Flask의 라우트 데코레이터로, /sendEmail 경로에 대한 요청을 처리하는 함수를 정의합니다.
- methods=[‘POST’]: 이 엔드포인트는 HTTP POST 요청만 허용합니다.
2.데이터 요청 처리
- request.json: 클라이언트가 보낸 JSON 데이터를 가져옵니다.
- data.get(‘secretCode’), data.get(’email’): JSON 데이터에서 secretCode와 email 값을 추출합니다.
- 추출된 값을 변수로 저장하여 이후 이메일 전송에 사용합니다.
- print(data): 디버깅 목적으로 데이터를 콘솔에 출력합니다
3.입력 검증
secretCode 또는 email이 없으면, 클라이언트에게 400 (Bad Request) 상태 코드와 에러 메시지를 반환합니다.
4.이메일 내용 설정
- subject: 이메일 제목 설정.
- body: 이메일 본문에 인증 코드를 포함한 메시지를 설정.
5.MIME 형식 메시지 생성
- MIMEMultipart():
- MIME(Multipurpose Internet Mail Extensions) 형식의 이메일 메시지를 생성합니다.
- 여러 종류의 데이터를 첨부할 수 있는 포맷.
- msg[‘From’]: 발신자 이메일 주소.
- msg[‘To’]: 수신자 이메일 주소.
- msg[‘Subject’]: 이메일 제목.
- msg.attach(MIMEText(body, ‘plain’)):
- 본문을 텍스트 형식으로 추가.
.이메일 전송
- smtplib.SMTP(SMTP_SERVER, SMTP_PORT):
- SMTP 서버에 연결합니다.
- SMTP_SERVER: SMTP 서버 주소.
- SMTP_PORT: SMTP 서버 포트.
- server.starttls():
- 보안 연결을 설정합니다.
- server.login(SENDER_EMAIL, SENDER_PASSWORD):
- 발신자 이메일 계정에 로그인합니다.
- SENDER_EMAIL: 발신자 이메일 주소.
- SENDER_PASSWORD: 발신자 이메일 비밀번호.
- server.sendmail(SENDER_EMAIL, email, msg.as_string()):
- 이메일을 전송합니다.
- msg.as_string(): MIME 형식 메시지를 문자열로 변환하여 전송.
- server.quit():
- 연결을 종료합니다.
7.성공 응답
이메일 전송에 성공하면 클라이언트에게 200 (OK) 상태 코드와 성공 메시지를 반환합니다.
8. 예외 처리
이메일 전송 중 오류가 발생하면:
- 오류 메시지를 콘솔에 출력.
- 클라이언트에게 500 (Internal Server Error) 상태 코드와 에러 메시지를 반환.

인증코드를 보냄과 동시에 인증코드 또한 formData.emailCode로 저장합니다.

저장된 코드와 사용자가 입력한 코드의 값을 검증합니다.
입력한 코드가 틀리다면 회원가입이 진행되지 않고 경고 메시지를 표기합니다.
마지막으로 코드가 같다면 서버(/register)으로 회원가입을 요청합니다.