0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2021-02-16

はじめに

ローカルで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"}
]

※ 読みたいメッセージは3と割り出した。

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 
# <- 改行コードが2つ続いた場所から、最後までの以下をコピー(場合によっては、==(イコール2つ)の手前まで)
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の問題を解決するのがベストです。(大事なことなので2回目です。)
ただ、サクッと本文だけ確認したい!
という場合に、こちらの記事を思い出してみてはいかがでしょうか?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?