-
scalatags 를 이용해 Email 로 전송할 Html 생성하기web/scalajs 2021. 11. 14. 20:50
문제
Email 로 전송할 Html String 을 생성하려고 한다.
scalatags 를 이용해 typesafe 한 아래 모양의 Html 을 만들어 보자
코드
build.sbt 에 아래 라이브러리를 추가한다.
libraryDependencies ++= Seq( "com.lihaoyi" %% "scalatags" % "0.9.4" )
Html 을 생성하는 코드를 아래와 같이 작성한다.
import scalatags.Text import scalatags.Text.all._ object EmailHtml { case class Item(no: Int, engine: String, url: String) def main(args: Array[String]): Unit = { val items: Seq[Item] = List( Item(1, "naver", "http://www.naver.com"), Item(2, "google", "http://www.google.com") ) val TH: Text.TypedTag[String] = th(border := "1px solid black", padding := "10px") val TD: Text.TypedTag[String] = td(border := "1px solid black", padding := "10px") val headerRow: Text.TypedTag[String] = tr( TH("순서"), TH("검색엔진"), TH("LINK") ) val contentRows: Seq[Text.TypedTag[String]] = items.map { item => tr( TD(item.no), TD(item.engine), TD(a(href := item.url, target := "_blank")(p(item.url))) ) } val rows: Seq[Text.TypedTag[String]] = headerRow +: contentRows val message: Text.TypedTag[String] = html( body( table( width := "100%", border := "1px solid black", borderCollapse := "collapse" )(rows), footer( p("문의: https://github.com/windbird123") ) ) ) println(message.render) } }
생성된 Html
<html> <body> <table style="width: 100%; border: 1px solid black; border-collapse: collapse;"> <tr> <th style="border: 1px solid black; padding: 10px;">순서</th> <th style="border: 1px solid black; padding: 10px;">검색엔진</th> <th style="border: 1px solid black; padding: 10px;">LINK</th> </tr> <tr> <td style="border: 1px solid black; padding: 10px;">1</td> <td style="border: 1px solid black; padding: 10px;">naver</td> <td style="border: 1px solid black; padding: 10px;"> <a href="http://www.naver.com" target="_blank"> <p>http://www.naver.com</p> </a> </td> </tr> <tr> <td style="border: 1px solid black; padding: 10px;">2</td> <td style="border: 1px solid black; padding: 10px;">google</td> <td style="border: 1px solid black; padding: 10px;"> <a href="http://www.google.com" target="_blank"> <p>http://www.google.com</p> </a> </td> </tr> </table> <footer> <p>문의: https://github.com/windbird123</p> </footer> </body> </html>
'web > scalajs' 카테고리의 다른 글
javascript callback 을 scala Future 로 facade 작성 (0) 2023.12.11 href 값으로 empty 지정하기 (0) 2021.09.01 uri encoding (0) 2021.08.11