web/scalajs
scalatags 를 이용해 Email 로 전송할 Html 생성하기
wefree
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>