
開発環境でメールを扱う場合、最近ではMaildevというサーバーインストール型ツールを使うのが良さげという事で、
これまで、postfix一択でサーバー設定をしてきていたんだけど、このツールを使ってローカル開発環境を作ってみようと試みた。
Maildevの特徴
Githubに本家のソースコードがMITで公開されている。
https://github.com/maildev/maildev
このツールは、smtpポートでメール送信した際に、外部にメールを送信するんじゃなくて、
このツール内でメールを受信して、さもメール送信して、それを受けとったという事を仮想的に視覚化できるツールです。
要するに、実際のメールに送信しなくても、メール送信に成功したという確認と、送信されたメールの中身の確認ができてしまうという、
開発にうってつけのツールなのである。
アホなプログラムを書いた時に、無限にメールを送信し続けてしまうような事態になったら・・・と考えたらテストするのも怖いですよね。
そんな時に、このツールを受け口にしてくだけで、実際のインターネットには一切出て行かずにメール送信のチェックができてしまうという、安心感も得られます。
最近は、これをセットにして、以下の構成でDockerコンテナセットを作っているので、これでwifiなどが無い環境や、飛行機の中などでも、開発作業ができてしまいます。
Nginx + PHP-fpm + Mysql(maria) + Maildev
難点
このMaildevツールは、そもそも日本語メールに対応していなくて、
単にインストールしただけでは、文字化けしてしまいます。
日本語メールは、
ISO-2022と
UTF-8のどちらかの文字エンコードで送信されるのですが、どちらで送信しても文字化けします。
もちろん、これに不満を持っている日本国内エンジニアは、このツールをアップデートしたいと考えるようで、対応版を作ってくれたエンジニアもいます。
ISO-2022-JP に対応した maildev の dockerイメージ を作る
便利にDockerイメージも作ってくれているけど、このイメージを適用しても日本語対応しませんでした。
このブログ内にご丁寧にソースコードまで載せてくれていたので、それを適用してみたて、全く同じ環境を構築したんですが・・・
全く文字化けまっしぐらでした。
どうやらこの記事、2020年という事で、いまから5年ぐらい前のもので、環境依存による何かしらの不具合が起きていると考えられる。
きっと、バージョン依存なんじゃないかな?
インストールの苦労
そして、とある週末の日曜日丸一日を費やして、nodeにiconvを入れる作業をして、日本語化を試みたんですが、
一向に日本語を表示してくれない。
もしかして、PHPで送信している時のエンコード方式に問題があるんじゃないかと思い、思い切って、外部のリアルメールに送信してみたところ、
gmailで受け取ったら正常に文字化けせずに受け取る事ができた。
とすると、Maildevの表示機能で日本語対応ができていないのではないかと思い、alphine-linuxに日本語をインストールしてみたりしましたが、これはまるで意味なし。
思い切って、maildev内のスタイルシートをハックして、::before擬似要素で日本語を表示してみると、
ブラウザ上で日本語表示はできた。
やっぱり、受け取り側のモジュールか、表示する時のjavascript(nodeなので)処理で文字化けをしているんじゃないかと思われる。
あとがき
タイムリミットは、日曜日いっぱいだったので、平日はこの作業は行いません。
なので、週末を潰して、未解決案件になってしまいました。
きっと今後は、maildevのgithubをフォークして、内部を日本語対応できるように改修するしかなさそうな気がします。
それにしても、日本語化に成功したブログで、他の人達も日本語化できているんだが、
プログラムの経年劣化による、できない問題なのだろうか?
謎は深まるけど、他人のソースを大幅に変更するよりも、いっそのこと自分で作り直した方が早いんじゃないか・・・とも考えてしまう自分がいる。
0 件のコメント:
コメントを投稿