clojureでgmailを使ってメールを送信してみる

Clojuregmailを使ってメール送信するコードを書いてみた。サンプルなのであくまで単純に。
leiningenを使っているので、project.cljも一緒に乗せておく。
commons-emailを使っているので、dependenciesに記述しています。

(defproject send-gmail "1.0.0-SNAPSHOT"
  :description "FIXME: write"
  :dependencies [[org.clojure/clojure "1.1.0"]
                 [org.clojure/clojure-contrib "1.1.0"]
                 [org.apache.commons/commons-email "1.2"]]
  :dev-dependencies [[swank-clojure "1.2.0-SNAPSHOT"]])

core.cljは以下のような感じになる。
日本語が文字化けしないcharsetを指定している。

(import '(org.apache.commons.mail SimpleEmail))
(import '(org.apache.commons.mail DefaultAuthenticator))

(def email (SimpleEmail.))
(doto email
  (.setSmtpPort 587)
  (.setAuthenticator (DefaultAuthenticator. "gmailアカウント" "gmailパスワード"))
  (.setHostName "smtp.gmail.com")
  (.setFrom "送信元アドレス")
  (.setCharset "iso-2022-jp")
  (.setContent "テスト" "text/plain; charset=iso-2022-jp")
  (.setSubject "テスト")
  (.addTo "送信先アドレス")
  (.setTLS true))
(.send email)

実行方法は以下のような感じになる。
leinにreplとclojureのソースを引数として渡すと、実行できる。

lein repl src/send_gmail/core.clj

同じコードはJavaでも書けるけど、Clojureの方がシンプルだろうな。