commons-emailって便利だね

2019-02-28Groovy

勉強不足で知らなかった。以前の関西Groovy勉強会でid:kiy0takaさんがcommons-vfsを利用したプログラムを書いているという話をしてくれた。commonsについて勉強不足だったので、今日時間ができたので調べてみる。

便利なクラスいっぱいだ。メール管理クラスがあったので、GroovyでラッピングしてGmail専用クラスを作成してみた。

Grape使用なのでjarファイルは不要。

使い方

下記のいずれかで。

  1. 環境変数CLASSPATHの通ったディレクトリにGmail.groovyを配置する。
  2. groovyコマンドのcpオプションでGmail.groovy配置フォルダを指定する。

Gmail.groovy

#!/usr/bin/env groovy
import org.apache.commons.mail.*
import javax.mail.*
import javax.mail.internet.*
@Grab(group='org.apache.commons', module='commons-email', version='1.2')
class Gmail{
String acount
String password
String charset = "UTF-8"
def send( String subject, String message, List<String> to, List<String> cc = [], List<String> bcc = [] ){
def email = new SimpleEmail(
            subject:subject,
            msg:message,
            from:this.acount,
            to:to.collect{ new InternetAddress(it) },
            ssl:true,
            hostName:"smtp.gmail.com",
            sslSmtpPort:465,
            charset:this.charset
)
if( cc )
email.cc = cc.collect{ new InternetAddress(it) }
if( bcc )
email.bcc = bcc.collect{ new InternetAddress(it) }
email.setAuthentication(this.acount, this.password)
email.send()
}
}

Sample.groovy

#!/usr/bin/env groovy
new Gmail(
    acount:"xxxxx@gmail.com",
    password:"yyyyy",
).send(
"件名",
"本文",
["zzzzz@softbank.ne.jp"],
)

補足

文字コードをかえたい場合には、Gmailクラスのコンストラクタに「charset:"変更したいコード"」の引数を追加すればOK。

2019-02-28Groovy