[go] 既存のPhalcon製mailformをgolangで書き直した

メールフォームを作り直した

[PHP Phalcon 3.4] メールフォーム作った
ちょうど一年くらい前に作ったのですが、迷惑メールに突っ込まれまくっていたため何通か頂いたのに反応できませんでした。せっかくこんな廃墟に来ていただいたというのに。

PHP Phalcon -> GO

そんなわけで自鯖からのphp mb_send_mailではなく、sendgridを使ってgoから飛ばすように変えました。LocalのPHP環境ではPhalconの4.xにしていたのですが、既存の3.4のメールフォーム、なんと全く動かず。上のエントリからリポジトリ見てもらえばわかるのですが、俗に言うMicroでさえこの有様。ちょっと面倒ですね。

というわけでPHPやめて、勉強しようしようと思っていたgoで同じものを書いてみました。CSRF周りはginにもあるようですが、Phalconと同じようにしたかったので自前実装です。ロジックの中でhtmlタグ生成するの嫌いなんですよね……。goでのWebアプリというと、SPAのバックで使う人が多いのでAPI鯖みたいなのが多いのですが、今回は完全にtemplatesを使ったベッタベタなWebアプリです。

https://bitbucket.org/dobusarai/go-mailform/src/master/

readmeかったるくて自動生成まんまなのさすがにマズイな。

噂には聴いていましたが、モダンな言語にある機能?が本当に無いので驚いた。でもこのレベルなら慣れの範疇だなー。ただgo modは前エントリにも書いたけどアレだと思う。あと、この量のコードでhttpd含めて動いてしまうのは凄いな、と。

https://bitbucket.org/dobusarai/go-mailform/src/master/main.go

たった252行だよ。(templates等は除く)

すでに /contact はこれで動いています。いないと思うけど使う人は、settings.ini.dummyをsettings.iniにリネームして中身書き換えればそのまま動きます。

結局

お気づきの方は初っ端からお気づきだと思いますが、sendgridにしようがなんだろうがSPF/DKIMの設定からは逃れられないのです。あー。SendGridのDomain Authenticationまわりを設定しないとダメですね。あー、めんどくさい。