GCP에서 SendGrid로 동적 메일 보내기

안녕하세요. 오늘은 베스핀글로벌 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”를 검색합니다.

B. “START WITH THE FREE PLAN” 버튼을 클릭하여 Subscription 설정화면으로 이동합니다.

C. GCP Billing Account 계정으로만 “START WITH THE FREE PLAN” 버튼이 활성화 됩니다.

D. 기능 및 할당량을 확인 후 필요에 맞는 Plan 을 선택합니다.

(https://console.cloud.google.com/marketplace/details/sendgrid-app/sendgrid-email)

Plan 은 설정 후 언제든지 변경 가능합니다.

E. Subscription 의 자동 갱신 내용을 확인 후 “Subscribe” 버튼을 클릭하여 Subscription 을 활성화합니다.

F. Subscription 이 활성화되는데 약 1 분정도 소요됩니다.

G. GCP 계정과 연동되는 SendGrid 계정을 생성합니다.

H. GCP 화면에서 정상적으로 연동되었는지 확인합니다.

1-2. Subscription Plan 변경 및 취소

SendGrid Email API 관리 화면의 “Change or cancel plan” 버튼을 클릭 하거나 브라우저의 스크롤을 내려 Features & pricing 영역으로 이동합니다.

1-2-1. Subscription Plan 변경

A. 변경하려는 Plan 의 “Change “ 버튼을 클릭하여 안내 메시지를 확인 후 Plan 을 변경합니다.

B. 페이지를 새로고침하여 변경된 Plan 을 확인합니다.

1-2-2. Subscription 취소

“Cancel subscription” 버튼을 클릭하여 안내 메시지를 확인 후 Subscription 을 취소합니다.

[확인 필요]

  • 구독을 취소 하여도 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 에 접속합니다.

B. 최초 접속 시 사용자 정보를 입력하도록 안내합니다.

2-1-2. 시스템 관리자

A. SendGrid 에 접속합니다. (https://app.sendgrid.com/login)

B. 5Page 에서 생성한 SendGrid 계정으로 로그인합니다.

2.1.3. Subuser Management

루트 관리자 이외 SendGrid 를 로그인 하기 위하여 아래와 같이 하위 사용자를 관리 가능한 기능을 제공하고 있으나 특정 Plan 이상을 사용해야지 지원하는 기능으로 확인 됩니다.

A. Settings > Subuser Management 메뉴를 선택합니다.

https://sendgrid.com/docs/ui/account-and-settings/subusers/

2-2. API KEY

메일을 발송 시 인증 정보로 사용되는 API Key 를 생성하고 관리합니다.

A. Settings 하위의 API Keys 메뉴를 선택하여 API Keys 관리 화면으로 이동합니다.

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 를 생성합니다.

F. 생성된 API Key 를 클릭하여 복사하면 하단의 “Done” 버튼이 활성화됩니다.

G. 복사한 API Key 를 안전한 곳에 저장합니다. 화면을 벗어나면 API Key 는 다시 확인이 불가합니다.
H. “Done” 버튼을 클릭하여 API Keys 관리화면으로 이동합니다.

I. 목록에서 생성한 API Key 를 확인 합니다.

2-3. Dynamic Templates

메일 템플릿을 생성하고 관리합니다.

Email API 하위의 Dynamic Templates 또는 Templates 하위의 Dynamic 을 선택하여 Dynamic Template 관리화면으로 이동합니다

2-3-1. 템플릿 생성

A. “Create Dynamic Template” 버튼을 클릭하여 Dynamic Template 생성 화면으로 이동합니다.
B. Dynamic Template 이름을 입력 후 “Create” 버튼을 클릭하여 Dynamic Template 을 생성합니다.

C. Template 목록에서 위에서 생성한 Template 이름을 클릭합니다.
D. Template ID 는 API 를 통해 메일을 발송할 때 필요한 정보입니다.

E. “Add Version” 버튼을 클릭하여 Version 생성 화면으로 이동합니다.
F. SendGrid Email Designs 에서는 기본적인 디자인을 제공하고 있습니다.

G. 사용자 정의 디자인을 생성하기 위하여 My Email Designs 에서 Blank Template 을 선택합니다

H. Drag & Drop 으로 손쉽게 메일 디자인이 가능한 Design Editor 와 HTML 로 디자인 가능한 Code Editor 를 제공하고 있습니다.

I. Design Editor 예시 화면입니다

J. HTML 을 사용하기 위해 Code Editor 를 선택합니다.
K. 퍼블리싱 된디자인 코드를 HTML 영역에 붙여 넣습니다. 우측 미리 보기 영역에서 디자인 확인이 가능합니다.

L. 변수는 {{변수이름}}으로 정의 가능합니다.
아래의 예시에서는 “user_name”과 “login_date” 변수가 있습니다.

M. “TEST DATA” 메뉴를 선택하여 JSON 데이터를 입력하면 우측 미리 보기 영역에서 확인이 가능합니다.

N. 좌측의 Settings 를 클릭 후 Version Name 과 Subject 를 입력 합니다.
O. Send a Test Email 을 이용하여 사전에 테스트용 메일 발송이 가능합니다.
P. 상단의 “SAVE” 버튼을 클릭하여 Version 정보를 저장합니다.

2-3-2. 템플릿 버전 관리

템플릿의 디자인 변경에 대해 버전으로 관리가 가능합니다.

A. Template 을 선택 후 “Add Version” 버튼을 클릭하여 신규 버전을 생성합니다.

B. 신규로 생성한 Version 을 Template 에서 사용하기 위해서 신규 Version 우측의 메뉴를 열어 Make Active 를 선택합니다.

2-4. Alert

사용량 경고 및 통계 정보에 대한 이메일 알림 정보를 생성 및 관리합니다.

A. Settings 하위의 Alert Settings 메뉴를 선택하여 Alert 관리 화면으로 이동합니다.

B. “Create New Alert” 버튼을 클릭하여 Alert 생성 화면으로 이동합니다.

2-4-1. Email Credit Usage

사용하고 있는 Plan 에 할당된 Credit 의 사용량에 따른 이메일 알림을 설정합니다.

수신 메일 샘플입니다.

2-4-2. Email Statistics Summary

SendGrid 의 통계정보를 설정한 주기마다 메일로 발송합니다.

수신 메일 샘플입니다.

3. 메일 보내기

Python 기준 Sendgrid library 를 사용하기위한 정보 입니다.

3-1. Html

A. Cloud Function 샘플 코드입니다.

https://sendgrid.com/docs/for-developers/sending-email/v3-python-code-example/

B. Cloud Function 으로 메일을 발송하기 위한 요청 정보입니다.

C. 수신된 메일입니다.

3-2. Dynamic Template

A. Cloud Function 샘플 코드입니다.

https://sendgrid.com/docs/ui/sending-email/how-to-send-an-email-with-dynamic-transactional-
templates/

B. template_id 는 template 목록에서 template 이름을 클릭하면 확인 가능합니다.

C. Cloud Function 으로 메일을 발송하기 위한 요청 정보입니다.

D. 수신된 메일입니다.

감사합니다:)

문의: info@bespinglobal.com | 대표번호: 02-1668-1280

Leave a Comment