Closed wonseok-do closed 2 years ago
해당 부분 반영해서 더 직관적인 메세지가 갈 수 있게 처리해두도록 하겠습니다. 처리 완료되면 별도로 멘션 드리겠습니다.
해당 부분은 AwsSesProvider.prototpye.sendVerifycode() 에서 발생하는 문제입니다. 따라서, 해당 메서드 단계에서 에러 발생 지점 을 try-catch 로 감싼 다음에 에러를 형태에 맞게 가공하는 전용 핸들러 를 등록하려고 했습니다.
이를 위해서 살펴 본, 에러의 형태는 다음과 같이 나오고 있습니다.
MessageRejected: UnknownError
at deserializeAws_queryMessageRejectedResponse (~\project\node_modules\@aws-sdk\client-ses\dist-cjs\protocols\Aws_query.js:3560:23)
at deserializeAws_querySendEmailCommandError (~\project\node_modules\@aws-sdk\client-ses\dist-cjs\protocols\Aws_query.js:2561:25)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async ~\project\node_modules\@aws-sdk\middleware-serde\dist-cjs\deserializerMiddleware.js:7:24
at async ~\project\node_modules\@aws-sdk\middleware-signing\dist-cjs\middleware.js:11:20
at async StandardRetryStrategy.retry (~\project\node_modules\@aws-sdk\middleware-retry\dist-cjs\StandardRetryStrategy.js:51:46)
at async ~\project\node_modules\@aws-sdk\middleware-logger\dist-cjs\loggerMiddleware.js:6:22 {
'$fault': 'client',
'$metadata': {
httpStatusCode: 400,
requestId: '요청자-ID',
extendedRequestId: undefined,
cfId: undefined,
attempts: 요청한-숫자,
totalRetryDelay: 0
},
xmlns: '요청 도메인의 버전',
Error: {
Type: '요청-타입',
Code: 'MessageRejected',
Message: 'Email address is not verified. The following identities failed the check in region 요청지역: 수신자-이메일'
},
RequestId: '요청자-ID'
}
이 친구를 instanceof 를 톻애서 분기처리하기 위해서 다음과 같이 2 개를 확인하였습니다.
import { MessageRejected } from "@aws-sdk/client-ses";
console.log(err instnaceof Error) // true
console.log(err instanceof MessageRejected); // true
이 부분을 반영해서 다음과 같이 코드를 변경하였습니다.
public async sendVerifyCode(toEmail: string, emailVerifyCode: string): Promise<SendEmailCommandOutput> {
const ses = this.getSesInstance();
try {
return await ses.sendEmail({ /* 설정 및 내용 */ });
} catch (err) {
if (err instanceof MessageRejected)
throw new BadRequestException(`${toEmail} 은 메일 수신이 불가능한 이메일입니다.`);
else if (err instanceof Error) throw new UnkownError(`${err.name}, ${err.message}`);
else throw new UnkownTypeError(`알 수 없는 에러가 발생하였습니다. 대상 : ${JSON.stringify(err)}`);
}
}
해결된 요청 사항입니다.
제안사항
console - data:{isSuccess: false, message: 'UnknownError'} -> message:"사용할 수 없는 이메일입니다" 바꿔주실 수 있나요?
환경 설정