728x90
728x90

EmailJS 라이브러리

들어가며

  • 간편하게 회원가입으로 무료로 월 200건까지 이메일을 보낼 수 있도록 도와주는 EmailJS 라이브러리에 대해 정리해본다.

 

EmailJS

개념

  • 사용자가 서버 없이 자바스크립트만으로 이메일을 보낼 수 있도록 도와주는 서비스
    • 사용자는 백엔드 설정 없클라이언트 사이드에서 이메일을 전송할 수 있다.
  • SMTP 서버를 활용하여 이메일을 전송하며, Gmail, Outlook 등의 이메일 서비스를 지원한다.

 

주요 특징

  • 클라이언트 사이드에서 직접 이메일을 전송할 수 있어 백엔드가 필요없다.
  • Gmail, Yahoo, Outlook 등 여러 서비스와 호환된다.
  • 사용자 정의 템플릿을 만들어 동적으로 데이터를 전달할 수 있다.
  • 전송 데이터를 암호화하며 API 키를 사용하여 인증을 처리한다.
  • 몇 줄의 코드만으로 이메일 전송 기능을 구현할 수 있다.

 

주요 구성 요소

  • Service ID : 이메일을 전송하기 위해 필요한 특정 이메일 서비스 식별자
  • Template ID : 미리 정의된 이메일 템플릿을 참조하는 고유 ID
  • User ID : EmailJS 계정과 연결된 사용자의 고유 ID

 

사용하기

EmailJS 사이트 회원 가입

  • EmailJS 사이트 회원 가입을 한다. (무료)
 

Send email directly from your code | EmailJS

No server side code required. Add static or dynamic attachments, dynamic parameters, captcha code and more. Start with our free tier!

www.emailjs.com

 

이메일 서비스 추가하기

  • 좌측의 [Email Services] 탭을 클릭한 후, [Add New Service] 버튼을 추가한다.

 

  • 언하는 메일 서비스를 선택한다.

 

  • 메일을 발신할 계정을 연결(Connect) 해준 후, Service ID를 확인한다.
    • SSO를 통해 EmaiJS 사이트와 해당 이메일 계정을 연동 시켜주는 작업이 필요하다. 

 

  • 이메일 서비스를 생성하면, 연동된 이메일로 테스트 메일이 발송된다.

 

위에서 추가한 이메일 주소가 이메일 발신 주소가 된다.

 

 

템플릿 생성하기

  • 좌측의 [Email Templates] 탭을 클릭한 후, [Create New Template] 버튼을 추가한다.

 

  • To Email수신 메일 주소를 적어준다.
  • From Nam발신자 이름을 적어준다. (선택값)
  • From Email발신 메일 주소이다. (EmailJS에 연결한 계정)
  • Replay to회신을 받을 이메일 주소이다.
  • BCC, CC는 각각 숨은 참조 참조이다.

 

본문 안에서 중괄호 2개로 둘러쌓인 변수들({{to_name}}, {{from_name}}, {{message}})은 나중에 코드에서 파라미터로 전달해주는 값들이 들어가게 된다.

 

 

코드 작성하기

  • 우선 터미널에 아래 명령을 실행하여 EmailJS SDK를 설치해준다.
$ npm install --save emailjs/browser # yarn add emailjs/browser

 

  • 그리고 폼(Form)을 구현하는 컴포넌트 파일에 폼 제출 이벤트 처리 함수에 다음과 같이 코드를 작성해준다.
SERVICE_ID 확인
(/admin)
TEMPLATE_ID 확인
(/admin/templates)
PUBLIC_KEY 확인
(/admin/account)

 

ContactForm.jsx
import { useRef } from "react";
import emailjs from "emailjs-com";
const ContactForm = (values) => {
const form = useRef();
const sendEmail = (e) => {
e.preventDefault();
// 템플릿을 만들 때, {{}} 안에 넣었던 변수명들
const templateParmas = {
from_name: form.current.mail,
to_name: 'dev-astra',
message: form.message,
};
try {
emailjs.send(
"YOUR_SERVICE_ID",
"YOUR_TEMPLATE_ID",
templateParmas,
"YOUR_PUBLIC_KEY"
)
alert("Email sent successfully!");
}
catch (error) {
console.error(error.text);
alert("Failed to send email.");
});
};
return (
<form ref={form} onSubmit={sendEmail}>
<label>Name</label>
<input type="text" name="name" required />
<label>Email</label>
<input type="email" name="mail" required />
<label>Message</label>
<textarea name="message" required />
<button type="submit">Send</button>
</form>
);
};
export default ContactForm;

 

보안을 위해 SERVICE_ID, TEMPLATE_ID, PUBLIC KEY는 환경 설정 파일(.env)에 넣은 후 불러오는 방식을 사용하여 가져오도록 한다.

 

  • 만약 "The Public Key is invalid" 오류가 발생한다면, Account 페이지의 [Security] 탭의 API Settings 부분의 체크박스를 아래와 같이 설정해준다.
    • Allow EmailJS API for non-browser applications. 체크
    • Use Private Key (recommended) 체크 해제

 

사용 방법에 대한 더 자세한 내용은 아래의 API Guide 문서를 확인한다.
📎https://www.emailjs.com/docs/rest-api/send/

 

  • 아무 문제가 없다면, 다음과 같이 메일함에서 발송된 메일을 확인할 수 있다.

 

참고 사이트

 

Documentation | EmailJS

Well organized and easy to understand documentation with examples!

www.emailjs.com

 

Email JS "The Public Key is invalid"

I am using email js for my form submission in React, and I got this message: "The Public Key is invalid. To find this ID, visit https://dashboard.emailjs.com/admin/account, " but I am s...

stackoverflow.com

 

728x90
728x90

EmailJS 라이브러리들어가며EmailJS개념주요 특징주요 구성 요소사용하기EmailJS 사이트 회원 가입이메일 서비스 추가하기템플릿 생성하기코드 작성하기참고 사이트