読者です 読者をやめる 読者になる 読者になる

ゲンゾウ用ポストイット

Java、Groovy、Linux関連の備忘録

commons-emailって便利だね

勉強不足で知らなかった。以前の関西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。

広告を非表示にする