플레이 프레임워크 (Play framewotk)에서 이메일 보내기

View: 214 0 0
작성자: 달빛제이크
카테고리: Scala Language
발행: 2024-04-10 수정 2024-06-20

안녕하세요. 달빛제이크 입니다.

오늘은 플레이 프레임워크 (Play framework)에서 이메일 (email) 보내는 방법에 대해서 알아 볼 텐데요.

Play framework에서는 play mailer를 통해 email을 보낼 수 있습니다.

먼저 라이브러리 디펜던시를 추가합니다.

libraryDependencies ++= Seq(
  "org.playframework" %% "play-mailer" % "10.0.0",
  "org.playframework" %% "play-mailer-guice" % "10.0.0")

그리고 application.conf에 다음과 같이 설정해 줍니다. 여기서는 gmail의 smtp server를 사용합니다.

# Play mailer
# ~~~~~
play.mailer {
  host = "smtp.gmail.com"
  port = 587
  ssl = no
  tls = yes
  tlsRequired = yes
  user = "yours@gmail.com"
  password = "your_password"
  debug = no
  timeout = 60000
  connectiontimeout = 60000
  mock = no    # default no, yes will only log instead of sending an email
}

다음으로 실제로 Controller에서 email을 보내는 코드를 완성 합니다.

import play.api.libs.mailer.MailerClient
import play.api.libs.mailer.Email

// Play mailer
mailerClient.send(Email(
  subject = "email test",
  from = "yours@gmail.com",
  to = Seq(first@email.addr, second@email.addr),
  bodyText = Some("body text test"),
  bodyHtml = Some("<h1>body html test</h1>")

*mailerClient는 MailerClient를 Controller에서 DI (Dependency Injection)으로 받은 것입니다.

gmail smtp server를 통해서 이메일을 보내려면 gmail 설정을 변경해야 하는데, 본인 아이디의 구글 계정 설정으로 들어가서 보안>>2단계인증>>앱비밀번호를 설정하고 application.conf의 play.mailer.password에 앱비밀번호를 입력하면 됩니다. 자세한 사항은 구글에서 "gmail smtp 설정"으로 검색하시면 관련 글들을 찾아 도움을 받으실 수 있습니다.

Play framework로 웹애플리케이션을 만들어서 구글 클라우드 VM에 배포할 경우 본인 PC에서는 메일 보내기가 정상적으로 동작하는데, VM에서는 안되는 경우가 있습니다. 이것 때문에 구글 클라우드 공식 가이드 문서를 여러차례 찾아 보았는데, 문서 내용을 간략히 요약하면, VM에서는 25번 Port가 보안상 막혀있어서 Google Workspace를 통해 SMTP Delay 서비스를 사용하거나, SendGrid나 MailGun에서 제공하는 이메일 서비스를 사용하도록 권장하고 있습니다. 사실 이부분까지 고려하지 않아도 되는 것이 VM에서는 25번 Port는 사용이 불가하지만, 587번과 465번 Port는 사용이 가능하기 때문에 위의 설정대로 application.conf에 작성이 되어있으면, 이메일 송신이 정상적으로 이루어져야 합니다. 앞서 말씀드린 VM에서 이메일이 보내지지 않는 경우에는 구글클라우드 VM의 네트워크 구성을 살펴보시기 바랍니다. ( 관련 글 https://code-snippet.kr/blog/Google%20Cloud/44 )

지금까지 Play framework에서 email 보내는 법을 알아봤는데요, Play mailer를 통해 손쉽게 이메일을 보낼 수 있었습니다.
더욱 자세한 사항은 Play framework 공식 홈페이지에 들어가셔서 도움을 받으시면 될 것 같습니다.

감사합니다.

comments 0