🍏 개발일기

이메일 API 찾아보고 정리해보기

보배 진 2025. 12. 18. 11:39

 

 

 

✈ 이메일 API란

사람이 직접 메일 프로그램(Gmail, Outlook 등)을 쓰는게 아니라

코드로 이메일을 보내고/확인하는 기능

 

ex) 회원가입 인증 메일 발송

비밀번호 재설정 링크 전송

주문 완료 안내 메일

관리자 알림 메일

 

 

 

 

 

이메일 API로 할 수 있는 것

[ 주요 기능 ]

이메일 보내기

첨부파일 포함 메일

HTML 메일 전송

다수에게 동시에 전송

메일 템플릿 사용

 

[ 잘 안하는 것 ]

이메일 읽기/삭제

메일 서버 직접 구축

 

 

 

 

 

✈ 이메일 전송 방식 2가지

 

1) SMTP 기반 (전통 방식)

Gmail, Naver 메일 서버 사용

자바에서는 JavaMail API

설정이 조금 번거롭다

 

구조  : 내서버 ➡ SMTP  서버 ➡ 수신자 메일함

 

 

2) 이메일 서비스 API (요즘 방식)

SendGrid, Amazon SES, Mailgun 등

REST API 방식

안정적이고 대량 발송에 강함

 

구조 : 내서버 ➡ 이메일 서비스 API ➡ 수신자 메일함

 

 

 

 

 

✈ JAVA에서 가장 많이 쓰는 이메일 API

 

JavaMail API 표준

자바에서 이메일 보낼 때 가장 기본

 

Maven 의존성

<dependency>
  <groupId>com.sun.mail</groupId>
  <artifactId>javax.mail</artifactId>
  <version>1.6.2</version>
</dependency>

 

 

 

기본 코드 예제

Properties prop = new Properties();
prop.put("mail.smtp.host", "smtp.gmail.com");
prop.put("mail.smtp.port", "587");
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.starttls.enable", "true");

Session session = Session.getInstance(prop, new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("내이메일@gmail.com", "앱비밀번호");
    }
});

Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("내이메일@gmail.com"));
message.setRecipients(
    Message.RecipientType.TO,
    InternetAddress.parse("user@email.com")
);
message.setSubject("회원가입 인증");
message.setText("인증번호: 123456");

Transport.send(message);

 

주의

Gamil은 앱 비밀번호 필요

2단계 인증 필수

 

 

 


 

 

 

 

이메일 API 실제 사용 예 (웹 프로젝트)

회원가입 인증

회원가입 ➡ 인증번호 생성 ➡ 이메일 발송 ➡ 번호 비교

 

비밀번호 찾기

이메일 입력 ➡ 토큰 생성 ➡ 링크 메일 발송 ➡ 비밀번호 변경

 

주문 완료 메일

결제 완료 ➡ 주문 정보 조회 ➡ 주문 내역 메일 전송

 

 

 

✈  이메일 API vs 문자(SMS) API 비교

항목 이메일 API 문자 API
비용 무료~저렴 보통 유료
내용 길고 HTML 가능 짧음
즉시성 보통 매우 빠름
사용처 인증, 알림, 주문 본인인증, 긴급알림

 

 

 

 

✈ 실무에서 중요한 포인트

비밀번호 코드에 이메일 비번 직접 넣지 말기

환경변수 사용

스팸 처리 방지

실패 로그 꼭 남기기