ズボラ式メール解読(mailcatcher編)についての話

### はじめに
ローカルでRubyの開発をしている際に、メール送信でmailcacherに受信させて利用することがあると思います。
大体はWebUIにアクセスして本文を確認することが多いのですが、
私のローカル環境では、mailcatcherのWebUIにアクセスするとmailcatcherプロセスが停止してしまう問題が発生していました。
※ JSONでの取得であればプロセスが停止しない。それも不思議

この問題を解決させようと時間をかけていた際に、
「base64だな。この問題を解決する時間よりも、メールの中身をサクッとデコードして閲覧しよう」という思いが、
私の中で勝ってしまった為、利用した手段です。
※ 本来であれば、mailcatcherがちゃんと動く状態にするのが対処法としては正ですので、お忘れなきように。

### この記事を実現するための材料
・ mailcatcher
・ curl コマンド
・ base64 コマンド
・ echo コマンド

### メールリストの確認
現在受け取っているメールリストをmailcatcherに問い合わせる

```
% curl "http://localhost:1080/messages" 
-----
[
　　{"id":3,"sender":"<hayaton+test@XXXXXXXX.XX>","recipients":"[\"<hayaton@XXXXXXXX.XX>\"]","subject":"test","size":"709","created_at":"2021-02-15T10:06:39+00:00"},　# <- これを読みたいとする。
　　{"id":2,"sender":"<hayaton+test@XXXXXXXX.XX>","recipients":"[\"<hayaton@XXXXXXXX.XX>\"]","subject":"test","size":"452","created_at":"2021-02-15T10:03:57+00:00"},
　　{"id":1,"sender":"<hayaton+test@XXXXXXXX.XX>","recipients":"[\"<hayaton@XXXXXXXX.XX>\"]","subject":"test","size":"295","created_at":"2021-02-15T10:02:21+00:00"}
]
```
※ 読みたいメッセージは３と割り出した。

### id:3のメッセージを取得

```
% curl "http://localhost:1080/messages/3.json"
----- # WebでPrettyしました。
{
   "id":3,
   "sender":"<hayaton+test@XXXXXXXX.XX>",
   "recipients":"[\"<hayaton@XXXXXXXX.XX>\"]",
   "subject":"test",
   "source":"Date: Mon, 15 Feb 2021 19:06:39 +0900\nFrom: hayaton+test@XXXXXXXX.XX\nTo: hayaton@XXXXXXXX.XX\nMessage-ID: <XXXXXXXXXXX_XXXXXXXX@hayatonnoMacBook.local.mail>\nSubject: test\nMime-Version: 1.0\nContent-Type: text/plain;\n charset=UTF-8\nContent-Transfer-Encoding: base64\n\n5LuK5pel44Gv5rip44GL44GE5pel44Gg44Go5oCd44GE44G+44GZ44GL77yf\n44Gd44KT44Gq44GT44Go44GC44KK44G+44Gb44KT44CC5pys5pel44Gv5a+S\n44GE5pel44Gn44GZ44CC5Yas44Gq44Gu44Gn44CCDQrjgarjga7jgafjgIHk\nu4rml6Xjga/ljYroopbjgafpgY7jgZTjgZnjga7jga/lpKflpInjgafjgZnj\ngILmmpbmiL/jgYzlv4XopoHjgarmmYLmnJ/jgavljYroopbjgajjgYTjgYbj\nga7jga/plpPpgZXjgaPjgabjgb7jgZnjgojjga3jgIINCuOBqeOBhuOBnuea\nhuOBleOCk+OBiuawl+OCkuOBpOOBkeOBj+OBoOOBleOBhOOAgg0K",
   "size":"709",
   "created_at":"2021-02-15T10:06:39+00:00",
   "formats":[
      "source",
      null,
      null
   ],
   "attachments":[
      
   ]
}
```
※ source属性が大事

### source属性から、本文のエンコードされた箇所を抜き出す。
```
Date: Mon, 15 Feb 2021 19:06:39 +0900\nFrom: hayaton+test@XXXXXXXX.XX\nTo: hayaton@XXXXXXXX.XX\nMessage-ID: <XXXXXXXXXXX_XXXXXXXX@hayatonnoMacBook.local.mail>\nSubject: test\nMime-Version: 1.0\nContent-Type: text/plain;\n charset=UTF-8\nContent-Transfer-Encoding: base64\n\n 
# <- 改行コードが２つ続いた場所から、最後までの以下をコピー(場合によっては、==（イコール２つ）の手前まで)
5LuK5pel44Gv5rip44GL44GE5pel44Gg44Go5oCd44GE44G+44GZ44GL77yf\n44Gd44KT44Gq44GT44Go44GC44KK44G+44Gb44KT44CC5pys5pel44Gv5a+S\n44GE5pel44Gn44GZ44CC5Yas44Gq44Gu44Gn44CCDQrjgarjga7jgafjgIHk\nu4rml6Xjga/ljYroopbjgafpgY7jgZTjgZnjga7jga/lpKflpInjgafjgZnj\ngILmmpbmiL/jgYzlv4XopoHjgarmmYLmnJ/jgavljYroopbjgajjgYTjgYbj\nga7jga/plpPpgZXjgaPjgabjgb7jgZnjgojjga3jgIINCuOBqeOBhuOBnuea\nhuOBleOCk+OBiuawl+OCkuOBpOOBkeOBj+OBoOOBleOBhOOAgg0K
```
### デコード
```
% echo "5LuK5pel44Gv5rip44GL44GE5pel44Gg44Go5oCd44GE44G+44GZ44GL77yf\n44Gd44KT44Gq44GT44Go44GC44KK44G+44Gb44KT44CC5pys5pel44Gv5a+S\n44GE5pel44Gn44GZ44CC5Yas44Gq44Gu44Gn44CCDQrjgarjga7jgafjgIHk\nu4rml6Xjga/ljYroopbjgafpgY7jgZTjgZnjga7jga/lpKflpInjgafjgZnj\ngILmmpbmiL/jgYzlv4XopoHjgarmmYLmnJ/jgavljYroopbjgajjgYTjgYbj\nga7jga/plpPpgZXjgaPjgabjgb7jgZnjgojjga3jgIINCuOBqeOBhuOBnuea\nhuOBleOCk+OBiuawl+OCkuOBpOOBkeOBj+OBoOOBleOBhOOAgg0K" | base64 -d 

-----
今日は温かい日だと思いますか？そんなことありません。本日は寒い日です。冬なので。
なので、今日は半袖で過ごすのは大変です。暖房が必要な時期に半袖というのは間違ってますよね。
どうぞ皆さんお気をつけください。
```

### まとめ
本来であれば、mailcatcherの問題を解決するのがベストです。（大事なことなので２回目です。）
ただ、サクッと本文だけ確認したい！
という場合に、こちらの記事を思い出してみてはいかがでしょうか？