안녕하세요. 오늘은 베스핀글로벌 DevOps실 이주웅님이 작성해주신 Using SendGrid with GCP에 대해 알아보겠습니다.
GCP에서는 AWS SES와 같은 서비스가 없어 STMP릴레이 서버를 구축하거나 외부 메일 서비스를 이용해야 합니다.
이번에는 외부 메일 서비스 중 SendGrid를 이용하여 메일을 발송하는 방법에 대해 설명하겠습니다.
1. SENDGRID EMAIL API SETTING
Google Cloud Platform 에서 SendGrid Email API 를 설정하는 방법에 대한 내용을 기술합니다.
1-1. Subscription 활성화
이미 GCP 조직 또는 계정에 SendGrid Email API 구독이 활성화 되어 있으면 본 내용은 생략 가능합니다.
A. Google Cloud Console 에서 “SendGrid Email API”를 검색합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-42.png?resize=810%2C256&ssl=1)
B. “START WITH THE FREE PLAN” 버튼을 클릭하여 Subscription 설정화면으로 이동합니다.
C. GCP Billing Account 계정으로만 “START WITH THE FREE PLAN” 버튼이 활성화 됩니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-43.png?resize=808%2C411&ssl=1)
D. 기능 및 할당량을 확인 후 필요에 맞는 Plan 을 선택합니다.
(https://console.cloud.google.com/marketplace/details/sendgrid-app/sendgrid-email)
Plan 은 설정 후 언제든지 변경 가능합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-44.png?resize=814%2C465&ssl=1)
E. Subscription 의 자동 갱신 내용을 확인 후 “Subscribe” 버튼을 클릭하여 Subscription 을 활성화합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-45.png?resize=811%2C475&ssl=1)
F. Subscription 이 활성화되는데 약 1 분정도 소요됩니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-46.png?resize=817%2C470&ssl=1)
G. GCP 계정과 연동되는 SendGrid 계정을 생성합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-47.png?resize=540%2C598&ssl=1)
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-48.png?resize=605%2C596&ssl=1)
H. GCP 화면에서 정상적으로 연동되었는지 확인합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-49.png?resize=814%2C495&ssl=1)
1-2. Subscription Plan 변경 및 취소
SendGrid Email API 관리 화면의 “Change or cancel plan” 버튼을 클릭 하거나 브라우저의 스크롤을 내려 Features & pricing 영역으로 이동합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-50.png?resize=815%2C408&ssl=1)
1-2-1. Subscription Plan 변경
A. 변경하려는 Plan 의 “Change “ 버튼을 클릭하여 안내 메시지를 확인 후 Plan 을 변경합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-51.png?resize=817%2C519&ssl=1)
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-52.png?resize=814%2C444&ssl=1)
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-53.png?resize=814%2C382&ssl=1)
B. 페이지를 새로고침하여 변경된 Plan 을 확인합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-54.png?resize=815%2C456&ssl=1)
1-2-2. Subscription 취소
“Cancel subscription” 버튼을 클릭하여 안내 메시지를 확인 후 Subscription 을 취소합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-55.png?resize=813%2C497&ssl=1)
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-56.png?resize=819%2C451&ssl=1)
[확인 필요]
- 구독을 취소 하여도 SendGrid Portal 에서 생성한 API KEY 등의 정보 및 설정은 저장되어 있습니다.
(구독을 재 생성하고 SendGrid Website 에 들어가보면 기존 정보들이 그대로 유지되어 있었습니다.)
- 구독을 취소하였는데도 기존에 생성한 API KEY 를 사용해서 메일이 발송되었습니다.
(추가내용. 특정주기인지Session 인지확인이안되지만SendGrid website 에서 logout 하니 메일 발송이 이루어지지 않았습니다.)
2. SENDGRID MANAGEMENT
메일 발송과 관련된 최소한의 주요 기능에 대해서만 기술합니다.
2-1. Manage website 접속
2-1-1. GCP Billing Account 계정(SendGrid SSO 연동 계정)
A. “Manage API Keys on SendGrid Website” 버튼을 클릭하여 SendGrid website 에 접속합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-57.png?resize=702%2C407&ssl=1)
B. 최초 접속 시 사용자 정보를 입력하도록 안내합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-58.png?resize=678%2C458&ssl=1)
2-1-2. 시스템 관리자
A. SendGrid 에 접속합니다. (https://app.sendgrid.com/login)
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-59.png?resize=552%2C601&ssl=1)
B. 5Page 에서 생성한 SendGrid 계정으로 로그인합니다.
2.1.3. Subuser Management
루트 관리자 이외 SendGrid 를 로그인 하기 위하여 아래와 같이 하위 사용자를 관리 가능한 기능을 제공하고 있으나 특정 Plan 이상을 사용해야지 지원하는 기능으로 확인 됩니다.
A. Settings > Subuser Management 메뉴를 선택합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-60.png?resize=818%2C577&ssl=1)
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-61.png?resize=831%2C511&ssl=1)
2-2. API KEY
메일을 발송 시 인증 정보로 사용되는 API Key 를 생성하고 관리합니다.
A. Settings 하위의 API Keys 메뉴를 선택하여 API Keys 관리 화면으로 이동합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-62.png?resize=813%2C540&ssl=1)
B. “Create API Key” 버튼을 클릭하여 API Key 생성 화면으로 이동합니다.
C. API Key 관리 화면에 표시할 API Key Name 을 입력합니다.
D. API Key Permissions 은 “Restricted Access”를 선택하여 메일 발송에 필요한 최소한의 권한인 “Mail Send”에 대해서만 Access 를 허용합니다.
E. 하단의 “Create & View” 버튼을 클릭 하여 API Key 를 생성합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-63.png?resize=814%2C779&ssl=1)
F. 생성된 API Key 를 클릭하여 복사하면 하단의 “Done” 버튼이 활성화됩니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-64.png?resize=821%2C367&ssl=1)
G. 복사한 API Key 를 안전한 곳에 저장합니다. 화면을 벗어나면 API Key 는 다시 확인이 불가합니다.
H. “Done” 버튼을 클릭하여 API Keys 관리화면으로 이동합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-65.png?resize=818%2C302&ssl=1)
I. 목록에서 생성한 API Key 를 확인 합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-66.png?resize=825%2C214&ssl=1)
2-3. Dynamic Templates
메일 템플릿을 생성하고 관리합니다.
Email API 하위의 Dynamic Templates 또는 Templates 하위의 Dynamic 을 선택하여 Dynamic Template 관리화면으로 이동합니다
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-67.png?resize=813%2C404&ssl=1)
2-3-1. 템플릿 생성
A. “Create Dynamic Template” 버튼을 클릭하여 Dynamic Template 생성 화면으로 이동합니다.
B. Dynamic Template 이름을 입력 후 “Create” 버튼을 클릭하여 Dynamic Template 을 생성합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-68.png?resize=824%2C264&ssl=1)
C. Template 목록에서 위에서 생성한 Template 이름을 클릭합니다.
D. Template ID 는 API 를 통해 메일을 발송할 때 필요한 정보입니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-69.png?resize=821%2C473&ssl=1)
E. “Add Version” 버튼을 클릭하여 Version 생성 화면으로 이동합니다.
F. SendGrid Email Designs 에서는 기본적인 디자인을 제공하고 있습니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-70.png?resize=819%2C616&ssl=1)
G. 사용자 정의 디자인을 생성하기 위하여 My Email Designs 에서 Blank Template 을 선택합니다
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-71.png?resize=821%2C420&ssl=1)
H. Drag & Drop 으로 손쉽게 메일 디자인이 가능한 Design Editor 와 HTML 로 디자인 가능한 Code Editor 를 제공하고 있습니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-72.png?resize=816%2C419&ssl=1)
I. Design Editor 예시 화면입니다
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-73.png?resize=818%2C425&ssl=1)
J. HTML 을 사용하기 위해 Code Editor 를 선택합니다.
K. 퍼블리싱 된디자인 코드를 HTML 영역에 붙여 넣습니다. 우측 미리 보기 영역에서 디자인 확인이 가능합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-74.png?resize=824%2C445&ssl=1)
L. 변수는 {{변수이름}}으로 정의 가능합니다.
아래의 예시에서는 “user_name”과 “login_date” 변수가 있습니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-75.png?resize=770%2C366&ssl=1)
M. “TEST DATA” 메뉴를 선택하여 JSON 데이터를 입력하면 우측 미리 보기 영역에서 확인이 가능합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-76.png?resize=824%2C378&ssl=1)
N. 좌측의 Settings 를 클릭 후 Version Name 과 Subject 를 입력 합니다.
O. Send a Test Email 을 이용하여 사전에 테스트용 메일 발송이 가능합니다.
P. 상단의 “SAVE” 버튼을 클릭하여 Version 정보를 저장합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-77.png?resize=819%2C516&ssl=1)
2-3-2. 템플릿 버전 관리
템플릿의 디자인 변경에 대해 버전으로 관리가 가능합니다.
A. Template 을 선택 후 “Add Version” 버튼을 클릭하여 신규 버전을 생성합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-78.png?resize=805%2C417&ssl=1)
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-79.png?resize=820%2C444&ssl=1)
B. 신규로 생성한 Version 을 Template 에서 사용하기 위해서 신규 Version 우측의 메뉴를 열어 Make Active 를 선택합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-80.png?resize=821%2C532&ssl=1)
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-81.png?resize=814%2C499&ssl=1)
2-4. Alert
사용량 경고 및 통계 정보에 대한 이메일 알림 정보를 생성 및 관리합니다.
A. Settings 하위의 Alert Settings 메뉴를 선택하여 Alert 관리 화면으로 이동합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-82.png?resize=818%2C451&ssl=1)
B. “Create New Alert” 버튼을 클릭하여 Alert 생성 화면으로 이동합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-83.png?resize=815%2C337&ssl=1)
2-4-1. Email Credit Usage
사용하고 있는 Plan 에 할당된 Credit 의 사용량에 따른 이메일 알림을 설정합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-84.png?resize=803%2C350&ssl=1)
수신 메일 샘플입니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-85.png?resize=827%2C641&ssl=1)
2-4-2. Email Statistics Summary
SendGrid 의 통계정보를 설정한 주기마다 메일로 발송합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-86.png?resize=809%2C315&ssl=1)
수신 메일 샘플입니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-87.png?resize=826%2C526&ssl=1)
3. 메일 보내기
Python 기준 Sendgrid library 를 사용하기위한 정보 입니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-88.png?resize=613%2C197&ssl=1)
3-1. Html
A. Cloud Function 샘플 코드입니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-89.png?resize=859%2C509&ssl=1)
B. Cloud Function 으로 메일을 발송하기 위한 요청 정보입니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-90.png?resize=819%2C398&ssl=1)
C. 수신된 메일입니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-91.png?resize=828%2C230&ssl=1)
3-2. Dynamic Template
A. Cloud Function 샘플 코드입니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-92.png?resize=843%2C506&ssl=1)
templates/
B. template_id 는 template 목록에서 template 이름을 클릭하면 확인 가능합니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-93.png?resize=823%2C457&ssl=1)
C. Cloud Function 으로 메일을 발송하기 위한 요청 정보입니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-94.png?resize=809%2C539&ssl=1)
D. 수신된 메일입니다.
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/1-95.png?resize=842%2C513&ssl=1)
감사합니다:)
![](https://i0.wp.com/bespin-wordpress-bucket.s3.ap-northeast-2.amazonaws.com/wp-content/uploads/2023/03/%EB%A7%88%EB%AC%B4%EB%A6%AC-4.png?resize=504%2C109&ssl=1)
문의: info@bespinglobal.com | 대표번호: 02-1668-1280