Challenge Java EE !

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

JavaMailでS/MIMEのメール送信をする ~S/MIME証明書取得~

週末JavaMailでS/MIMEのメール送信を試したので、手順をまとめたいと思います。まずはS/MIME証明書の取得方法について書きます。

S/MIME証明書はComodoが発行するものを利用しました。
www.comodo.com

以下「Sign Up Now」を押します。ボタンの下に注意書きがありますが、FirefoxかIE 8以上を利用してください。今回はFirefoxを使いました。
f:id:kikutaro777:20180424005725p:plain

ボタンを押すと次のフォームが表示されるので、姓名とメールアドレスを入力して国「Japan」を選びます。Revocation Passwordは発行された証明書を破棄する場合に使うパスワードのようです。ここも必須なので入力します。Newsletterが不要な方はOpt inチェックを外し、Subscriber Agreementの同意チェックを入れて「Next>」を押します。
f:id:kikutaro777:20180424004706p:plain

登録が成功しました。
f:id:kikutaro777:20180424004748p:plain

メールを確認して「Click & Install Comodo Email Certificate」ボタンを押します。
f:id:kikutaro777:20180424005023p:plain

リンク先を開いてしばらくすると個人証明書のインストール完了メッセージが表示されます。
f:id:kikutaro777:20180424005121p:plain

Firefoxの「オプション」メニューから「プライバシーとセキュリティ」を選択して下の方にある「証明書を表示」を押します。
f:id:kikutaro777:20180424010900p:plain

インストールされた証明書を確認して「ダウンロード」を押すと、ファイル選択ダイアログが表示されるので保存場所とファイル名を選びます。
f:id:kikutaro777:20180424005223p:plain

バックアップ用のパスワードを入力します。
f:id:kikutaro777:20180424005313p:plain

これで完了です。
f:id:kikutaro777:20180424005346p:plain

最初知識なさすぎて、Let's Encryptの無料証明書とか使えるのかな?とか調べてしまいました。Let's EncryptのFAQにもちゃんと回答がありました。

よくある質問 - Let's Encrypt 総合ポータル

メールのテストに便利なMailTrap

メール送信のテストについて調べていたところ、MailTrapという便利なサービスがあることを知りました。

f:id:kikutaro777:20180402214843p:plain

MailTrapを使うと送信テストで一番怖い「メールの誤送信事故」を確実に防ぐことができます。宛先に本番データを使っても大丈夫です。

仕組みはよくあるSMTPのモックと同じで、MailTrapの場合はダミーのinboxを作ってくれて

f:id:kikutaro777:20180402220002p:plain

SMTPの他、POPもダミーを用意してくれます。

f:id:kikutaro777:20180402220018p:plain

あとは、このモック開発環境やテスト環境を設定するだけです。たとえば、JavaMailでSendGridのSMTPを使っているアプリケーションがあった場合、以下のようにSMTPの接続先と認証情報を変えるだけです。

Properties prop = new Properties();
//テスト時はSendGridのSMTP使っているところをMailTrapに変えるだけ
//prop.put("mail.smtp.host", "smtp.sendgrid.net");
prop.put("mail.smtp.host", "smtp.mailtrap.io");
prop.put("mail.smtp.port", 2525);
//認証情報はダミーで発行されたUsername, Passwordをセット
Transport.send(msg, "user", "password");

宛先のメールアドレスに実在のものを指定してメール送信すると、MailTrapのinboxで以下のようにメールを確認できます。もちろん、実際の宛先メールアドレスにはメールが届きません。

f:id:kikutaro777:20180402222324p:plain

Rawデータの確認もできます。(NetBeansで文字コード指定していないからMS932(^^;
f:id:kikutaro777:20180402222613p:plain

Analysisでは簡単なスパム判定までしてくれます。裏ではSpamAssasin使っているようです。
f:id:kikutaro777:20180402222730p:plain

inboxのメールはAPIを利用して簡単に取得できます。

f:id:kikutaro777:20180402223119p:plain

そのため、先日書いたMailSlurpのようなE2Eテストもやろうと思えばできそうです。

kikutaro777.hatenablog.com

お手軽に事故防止しつつ、ちゃんとしたテストができるので良い感じです。

調べたら日本語記事も結構ありました。
qiita.com

qiita.com

its-office.jp

Vue.jsのComponentsで2個目以降のコンポーネントが表示されない

最近Vue.jsで趣味アプリを作ってます。で、コンポーネントを使ってみようとapp.jsに以下の定義を入れました。

Vue.component("mycomp", {
  props: ["comp"],
  template: "<div>僕のコンポーネント</div>"
});

htmlは単純に次のように書きました。

<mycomp id="1" />
<mycomp id="2" />
<mycomp id="3" />

すると、なぜか1個しか表示されない orz

f:id:kikutaro777:20180314214214p:plain

タグの後ろに普通のHTMLタグを置いても何も表示されず、最初のコンポーネント配置以降に何らか問題があるようです。
なにこれ、JavaScriptわからないよー、と思いながらググったら全く同じ質問がありました。さすがStackOveflow!

stackoverflow.com

明示的に終了タグを書かないといけないようです。

書き換えたら

<mycomp id="1"></mycomp>
<mycomp id="2"></mycomp>
<mycomp id="3"></mycomp>

出たー!

f:id:kikutaro777:20180314214945p:plain

以上です。

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