SendGrid로 이메일 보내기

SendGrid를 사용하면 Google App Engine에서 이메일을 강화할 수 있습니다. SendGrid는 전달 성능을 향상시키고 앱이 전송하는 이메일에 수행되는 작업에 투명성을 제공합니다. SendGrid 인터페이스 또는 API를 통해 열기, 클릭, 수신 거부, 스팸 신고 등에 대한 통계를 확인할 수 있습니다.

가격

Google App Engine 고객은 Google Cloud Platform 콘솔을 통해 SendGrid Email API 요금제에 가입하여 매월 12,000개의 이메일을 무료로 전송할 수 있습니다. Google은 유료 계정에 가입한 고객에 대한 보상을 받습니다.

SendGrid 라이브러리

SendGrid를 사용하면 SMTP 릴레이 또는 웹 API를 통해 이메일을 보낼 수 있습니다.

SendGrid를 App Engine 프로젝트와 통합하려면 SendGrid 클라이언트 라이브러리를 사용하세요.

설정

SendGrid를 사용하여 이메일을 전송하려면 다음 안내를 따르세요.

  1. Google Cloud Platform 콘솔에서 새 GCP 프로젝트를 선택하거나 만들고 App Engine 애플리케이션이 존재하고 결제가 사용 설정되었는지 확인합니다.

    App Engine으로 이동

    App Engine 애플리케이션이 프로젝트에 존재하고 결제가 사용 설정되었으면 대시보드가 열립니다. 그렇지 않으면 안내에 따라 지역을 선택하고 결제를 사용 설정합니다.
  2. SendGrid Email API 요금제에 가입합니다.
  3. app.flexible.yaml의 환경 변수 섹션에 SendGrid 설정을 추가합니다.

    예를 들어 아래 샘플 코드에 대해 다음을 추가합니다.

    # The following env variables may contain sensitive information that grants
    # anyone access to your Sendgrid account. Do not add this file to your source
    # control.
    env_variables:
      SENDGRID_API_KEY: <your-sendgrid-api-key>
      SENDGRID_SENDER: <your-sendgrid-sender>

  4. SendGrid Node.js 라이브러리를 애플리케이션의 package.json에 추가합니다. 예:
    npm install --save sendgrid

SendGrid 인스턴스를 만들고 이를 사용하여 메일을 전송할 수 있습니다. 다음 샘플 코드는 이메일 전송 방법을 보여주고 일부 오류 처리를 지정합니다.

'use strict';

const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');

// The following environment variables are set by app.yaml (app.flexible.yaml or
// app.standard.yaml) when running on Google App Engine,
// but will need to be manually set when running locally.
const SENDGRID_API_KEY = process.env.SENDGRID_API_KEY;
const SENDGRID_SENDER = process.env.SENDGRID_SENDER;
const Sendgrid = require('sendgrid')(SENDGRID_API_KEY);

const app = express();

// Setup view engine
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

// Parse form data
app.use(bodyParser.urlencoded({ extended: false }));

app.get('/', (req, res) => {
  res.render('index');
});

app.post('/hello', (req, res, next) => {
  const sgReq = Sendgrid.emptyRequest({
    method: 'POST',
    path: '/v3/mail/send',
    body: {
      personalizations: [{
        to: [{ email: req.body.email }],
        subject: 'Hello World!'
      }],
      from: { email: SENDGRID_SENDER },
      content: [{
        type: 'text/plain',
        value: 'Sendgrid on Google App Engine with Node.js.'
      }]
    }
  });

  Sendgrid.API(sgReq, (err) => {
    if (err) {
      next(err);
      return;
    }
    // Render the index route on success
    res.render('index', {
      sent: true
    });
  });
});

if (module === require.main) {
  const PORT = process.env.PORT || 8080;
  app.listen(PORT, () => {
    console.log(`App listening on port ${PORT}`);
    console.log('Press Ctrl+C to quit.');
  });
}

module.exports = app;

고유한 계정 세부정보를 추가한 후 이메일 주소와 기타 메시지 내용을 편집합니다.

더 많은 이메일 설정 및 예는 SendGrid-Node.js 라이브러리를 참조하세요.

테스트 및 배포

앱을 로컬로 실행하기 전, 로컬 머신에서 명령줄을 사용하여 환경 변수를 설정해야 합니다. 예를 들어 위 샘플 코드의 경우 다음을 수행합니다.

export SENDGRID_API_KEY= your-sendgrid-api-key
export SENDGRID_SENDER= your-sendgrid-sender-email-address

이제 애플리케이션을 로컬로 실행하여 콜백 및 SMS 전송을 테스트할 수 있습니다. 예:

npm start

애플리케이션을 테스트한 후 프로젝트를 App Engine에 배포합니다.

gcloud app deploy app.flexible.yaml

실시간 정보 얻기

이메일 전송 외에도 SendGrid에서는 webhook을 사용하여 이메일을 수신하거나 이미 전송한 이메일을 확인할 수 있습니다.

Event API

애플리케이션에서 이메일 전송을 시작한 후에는 SendGrid에서 수집되는 통계를 통해 이메일 프로그램을 평가할 수 있습니다. Event API를 사용하면 이 데이터를 볼 수 있습니다. 예를 들어 수신자가 이메일을 열거나 클릭할 때마다 SendGrid가 사용자의 Google App Engine 앱에 설명 JSON을 전송하여 이벤트에 대응하거나 이후에 사용할 수 있도록 데이터를 저장할 수 있습니다.

Event API 문서에서는 webhook 설정 방법, 9개의 이벤트 유형, 이벤트 콜백에 포함된 필드에 대해 설명합니다.

Inbound Parse API

SendGrid는 이메일을 수신할 수 있습니다. Inbound Parse API는 지원 티켓 자동화 등의 양방향 애플리케이션에 사용할 수 있습니다.

Parse API는 새로운 내용이 있을 때 애플리케이션에 데이터를 전송하는 webhook입니다. 이 경우 사용자가 새로 추가되는 이메일과 연결한 도메인에 새 이메일이 도착할 때마다 webhook이 호출됩니다.

보낸 사람, 받는 사람, 제목, 본문이 서로 다른 필드로 지정된 이메일이 JSON으로 구성된 애플리케이션에 전송됩니다. 첨부 파일은 최대 20MB까지 허용됩니다.

Parse API 문서에는 DNS 설정 및 사용법 소개와 함께 모든 이메일로 전송되는 추가 필드를 포함한 자세한 세부정보가 포함되어 있습니다.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Node.js 문서용 App Engine 가변형 환경