SendGrid로 이메일 보내기

SendGrid를 사용하면 Google App Engine에서 이메일 기능을 강화할 수 있습니다. SendGrid는 전송 기능을 개선하고 앱에서 전송하는 이메일의 상태를 투명하게 제공합니다. SendGrid 인터페이스 또는 API를 통해 열기, 클릭, 수신 거부, 스팸 신고 등의 통계를 확인할 수 있습니다.

가격

Google App Engine 고객은 Google Cloud Platform 콘솔을 통해 SendGrid 이메일 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 이메일 API 요금제에 가입합니다.
  3. SendGrid 설정을 app.yaml의 환경 변수 섹션에 추가합니다.

    예를 들어 아래 샘플 코드의 경우 다음을 추가합니다.

    env_variables:
      SENDGRID_API_KEY: YOUR-SENDGRID-API-KEY
      SENDGRID_SENDER: YOUR-SENDGRID-SENDER

  4. SendGrid 자바 라이브러리를 애플리케이션의 pom.xml에 추가합니다. 예를 들면 다음과 같습니다.
    <dependency>
      <groupId>com.sendgrid</groupId>
      <artifactId>sendgrid-java</artifactId>
      <version>2.2.2</version>
    </dependency>

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

@SuppressWarnings("serial")
@WebServlet(name = "sendemail", value = "/send/email")
public class SendEmailServlet extends HttpServlet {

  @Override
  public void service(HttpServletRequest req, HttpServletResponse resp) throws IOException,
      ServletException {
    final String sendgridApiKey = System.getenv("SENDGRID_API_KEY");
    final String sendgridSender = System.getenv("SENDGRID_SENDER");
    final String toEmail = req.getParameter("to");
    if (toEmail == null) {
      resp.getWriter()
          .print("Please provide an email address in the \"to\" query string parameter.");
      return;
    }

    SendGrid sendgrid = new SendGrid(sendgridApiKey);
    SendGrid.Email email = new SendGrid.Email();
    email.addTo(toEmail);
    email.setFrom(sendgridSender);
    email.setSubject("This is a test email");
    email.setText("Example text body.");

    try {
      SendGrid.Response response = sendgrid.send(email);
      if (response.getCode() != 200) {
        resp.getWriter().print(String.format("An error occured: %s", response.getMessage()));
        return;
      }
      resp.getWriter().print("Email sent.");
    } catch (SendGridException e) {
      throw new ServletException("SendGrid error", e);
    }
  }
}

자신의 계정 세부정보를 추가한 후 이메일 주소와 기타 메시지 내용을 수정합니다.

이메일 설정 및 예는 SendGrid 자바 라이브러리를 참조하세요.

테스트 및 배포

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

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

이제 애플리케이션을 로컬로 실행하여 콜백 및 SMS 전송을 테스트할 수 있습니다. 예를 들어, Maven을 사용하는 경우 다음을 수행합니다.

mvn jetty:run

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

mvn appengine:deploy

실시간 정보 가져오기

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 설정 및 사용법 안내 및 모든 이메일과 함께 전송되는 추가 필드를 포함한 자세한 세부정보가 포함되어 있습니다.

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

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

App Engine flexible environment for Java docs