Challenge Java EE !

Java EEを中心に趣味や仕事における開発メモを書いています。

JavaMailのdependencyはどれが正しいのか?

問題です。MavenでJavaMailの依存性を定義する場合、以下3つのどれが正しいでしょうか?

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>javax.mail-api</artifactId>
    <version>1.4.7</version>
</dependency>

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.4.7</version>
</dependency>

答えはどれも正解です。

もちろん違いはあって

1はもう使わない。
2はjavax.mail.jarが含まれません。そのため、2の定義だけで実行すると com.sun.mail.util.MailLoggerが見つからずjava.lang.ClassNotFoundExceptionが発生します。
3はjavax.mail.jarを含むので一番堅実な定義です。

なお、2018/3/6現在ではJavaMail 1.6.1が最新なので

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.1</version>
</dependency>

が良さそうです。

1,2,3の違いについてはJavaMailのスペックリード(をされていた?の過去形になってしまうのかな?)のBill Shannonさん自らがStackOverflowで回答&解説されてます。
stackoverflow.com

が、1が2になった理由はちょっとよくわかりませんでした。もう少し調べないと…。

MailSlurpを利用したメールのEnd-To-Endテスト

システム開発する上でメールの送受信テストは何かと面倒です。できればユニットテストに組み込んで人手のテストは避けたい所だと思います。

JavaでJUnitを使ってテストする場合、SubEtha SMTPのようなライブラリを使うと割と簡単にテストできます。この辺はWEB+DB PRESS Vol.102のJavaの新定石で特集されているので、詳しく知りたい方は手に取ってみてください。
gihyo.jp

プログラミング言語に縛られない良い方法はないのかなと思っていたところ、先日SparkPostのブログでMailSlurpというサービスが紹介されていました。

www.sparkpost.com

f:id:kikutaro777:20180218234316p:plain

End-to-endのメールテストを簡単にするサービスで、Web APIを使ってテスト用のinbox作成と受信確認ができます。

実際に試してみたら非常に簡単だったので紹介します。

アカウント作成後、API Keyを取得します。

f:id:kikutaro777:20180218230936p:plain

Web APIでinboxを作成します。

curl -X POST https://api.mailslurp.com/inboxes?apiKey=test

成功するとidと宛先のメールアドレスが返ってきます。

{
  "payload":{
    "id":"xxxxxx-xxxx-xxxx-xxxx-xxxx",
    "address":""xxxxxx-xxxx-xxxx-xxxx-xxxx@example.com"
  },
  "message":""
}

上記メアドにメールを送信後した後、idをURLのパスに含めてGETするとinboxで受信したメールを取得できます。

curl https://api.mailslurp.com/inboxes/xxxxxx-xxxx-xxxx-xxxx-xxxx?apiKey=test

レスポンスで返ってくるpayloadはinbox作成時と違って配列形式なので注意してください(気付かずJavaでJSON->Object変換にしばらくハマってました)

{
  "payload": [
    {
      "body": "xxxxx",
      "from": "xxx",
      "id": "xxxxxx-xxxx-xxxx-xxxx-xxxx",
      "received": "2018-02-18T14:11:02.688Z",
      "returnPath": "xxx@examle.com",
      "subject": "Hello",
      "to": [
        "string"
      ]
    }
  ],
    "message": ""
}

このようにWeb API経由でinboxを作成&受信確認できるので、言語に関わらず簡単に使えます。また、テスト用の宛先が発行されるので誤送信も防げます。

次のコードはJavaでテストした例です。メール送信はSendGrid&JavaMailを使っています。

inbox作成にwaitが必要で、この時間をどのくらいに定めるか微妙なところですが、非常にお手軽です。実際に動くソースは以下に置きました。

github.com

「エバンジェリストスクール公開収録イベント エバスク全社会議2018」に参加しました!

イベントの抽選に当たって、1月23日(火)の19時から「エバンジェリストスクール公開収録イベント エバスク全社会議2018」に参加してきました(^^)!

エバンジェリストスクール!はTokyoFMで毎週土曜深夜24:30から30分、最新ITトレンドやビジネススキルをテーマに乃木坂46の若月佑美さんとエバンジェリスト西脇資哲さんがお話するラジオです。
kikutaro777.hatenablog.com

公開収録は今回2回目で、運よく2回連続の当選!!嬉しい(>_<;
f:id:kikutaro777:20180127122251j:plain

前回参加レポートはこちらです。
kikutaro777.hatenablog.com

今回はなんと日経ホールでの開催で、参加人数は前回の倍近い500人以上(ホール全体埋まってたので600近い気がしますが…)とのこと!

前回のゲストは秋元真夏さんことまなったんで、場を大いに盛り上げてくれましたが、今回も負けず劣らず超豪華なゲストで何と「若様軍団」勢ぞろいでした!みんな可愛かった(*´Д`)

http://img.nogizaka46.com/www/smph/member/img/wakatsukiyumi_prof.jpghttp://img.nogizaka46.com/www/smph/member/img/umezawaminami_prof.jpghttp://www.nogizaka46.com/smph/member/img/yamashitamizuki_prof.jpghttp://www.nogizaka46.com/smph/member/img/sakaguchitamami_prof.jpg

www.youtube.com

私はH列だったのですが、一番前の列とか相当近かった気がします…。最前列は日経電子版の有料会員枠だった感じですかね?自分も有料会員なんですが、今回案内出て速攻で申し込んだのがTokyoFMさんで、日経枠を全然意識できてなかったです><;しまった。次回は忘れないようにしないと。

それにしても1時間30分近く、ずっと乃木坂メンバを眺められる機会って中々ないですよね(^^;

今回は
・日経さんによるプレゼンの見本
・リスナーによる企画プレゼン
・タイピング大会
・西脇さんによる映像テーマのプレゼン
という構成で笑いっぱなしの1時間30分という感じでした!面白かった(^^)

日経さんのプレゼンは日経電子版の高速化に関する話で、結構技術的な内容が入ってて個人的には面白かったです(^^)が、客層的にどうだったんだろw 軍団員はポカーン( ゚д゚)としてた感じもw

リスナーによるプレゼンは結構ガチな企画で、乃木坂メンバの前でプレゼンする貴重な機会!で、私も申し込んでたのですが、残念ながら落選でした(*´Д`)もう少し一般受けする企画にするべきだった…けど頭が固いので発想がでない(´・ω・`)こんな企画でした↓
f:id:kikutaro777:20180127133648p:plain

ちなみにエバスクアプリは趣味で既に作ってるので是非使ってみてください!
エバスクアプリ! (Evatfm App!) - Google Play の Android アプリ
「エバスクアプリ! (Evatfm App!)」をApp Storeで

プレゼン落選悔しい(>_<;けど皆さんうますぎたので仕方ない。

美波さんは大人で綺麗だった…そして、美月さんかわいかった…。
あとたまちゃんがメッチャ面白かったですw

若ちゃん西脇さんの掛け合いはいつも聴いてるラジオ通りで、さすがに2年近くやってるだけあって阿吽の呼吸という感じですね。長く続いて欲しいなぁ。

イベントの詳細は既に参加者皆さんがリアルタイムツイートしてて、そっちみるほうが雰囲気伝わるかと思いtogetterにまとめました。
togetter.com

放送は明日1/28(日)の19時から!
f:id:kikutaro777:20180127134129p:plain

前回に続き、ネ申イベントすぎました。明日の個握で若ちゃんに「参加したよ」って報告しなきゃ。
f:id:kikutaro777:20180127135923j:plain

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村