KSCOLD LogoKSCOLD
Blog
Feed
Product
Admin Night
Vault
Guestbook
Info

Vault 목록

@IsEmail()

연결된 노트와 함께 읽기

@IsEmail()

2026년 5월 17일
  • @IsEmail()은 class-validator에서 문자열이 유효한 이메일 주소 형식인지 검사하는 데코레이터(Decorator)이다.
  • 내부적으로 validator.js의 isEmail() 함수를 사용하며, RFC 5322 기준의 이메일 형식을 검증한다.

설치

Bash

기본 사용법

TypeScript

유효/무효 이메일 예시

TypeScript

NestJS ValidationPipe와 함께 사용

  • ValidationPipe를 전역에 등록하면 DTO에 선언한 @IsEmail() 규칙이 자동으로 적용된다.
TypeScript
TypeScript

옵션 파라미터

TypeScript
옵션기본값설명
allow_display_namefalse"Name <email>" 형식 허용
require_tldtrueTLD(.com, .kr 등) 필수 여부
allow_ip_domainfalseIP 주소 도메인 허용

관련 데코레이터

  • @IsNotEmpty() — 빈 문자열 불허
  • @IsString() — 문자열 타입 검사
  • @MaxLength() — 최대 길이 제한 (이메일 필드는 보통 255자 제한)

Synapse Map Insight

pnpm add class-validator class-transformer
import { IsEmail, IsNotEmpty } from 'class-validator'; class LoginDto { @IsEmail({}, { message: '올바른 이메일 형식이 아닙니다.' }) @IsNotEmpty({ message: '이메일을 입력해주세요.' }) email: string; }
// 유효한 이메일 'user@example.com' // ✓ 'user+tag@gmail.com' // ✓ 'user@sub.domain.co.kr' // ✓ // 무효한 이메일 'user@' // ✗ (도메인 없음) '@example.com' // ✗ (로컬 파트 없음) 'user.example.com' // ✗ (@ 없음) 'user @example.com' // ✗ (공백 포함)
// main.ts app.useGlobalPipes(new ValidationPipe({ whitelist: true }));
// auth.controller.ts @Post('login') async login(@Body() dto: LoginDto) { return this.authService.login(dto); // email이 잘못된 형식이면 400 BadRequest 자동 반환 }
@IsEmail( { allow_display_name: true }, // "Alice <alice@example.com>" 형식 허용 { message: '이메일 형식을 확인하세요.' } ) email: string;