メールが送れているか確認したいけど自分の持っているメールアドレスに向けて送るのは…という方向けのGem「MailCatcher」
メールを送る動作をするときの確認ってどうしてますか?
アカウントを持っているどこかのメールサーバーを使って送ったりしていませんか?私もそうしてました。
でもそれだと、
- 正しく送れているはずなのにメールが来ない
- と思ったら迷惑メールフォルダーに突っ込まれていたというオチがつく、かもしれない
- ネットにつながっていないと確認できない
- いくつものメールアドレスで確認を取るのがめんどくさい
- うっかり設定ファイルをコミットして(以下省略
なんて可能性があります。そこで、これを一気に解決してくれるかもしれないGem「MailCatcher」を使ってみました。実はだいぶ前にも使ってみようと思ったのですがなぜか使えず、あの手この手を尽くした結果ホームディレクトリからの相対パスを入力してやることで使えたのでメモです。
インストール
gem install mailcatcher
以上。Gemなのでこれで済みます。楽ですね。
つかい方
$ mailcatcher Starting MailCatcher ==> smtp://127.0.0.1:1025 ==> http://127.0.0.1:1080 *** MailCatcher runs as a daemon by default. Go to the web interface to quit.
これだけ。MailCatcherは既定ではデーモンとして裏で起動してくれます。このあと、localhost:1080にブラウザでアクセスすると…
こんな感じのメーラーっぽい画面が表示されると思います。普通のメーラーと違うところといえば、toが表示されていることくらいでしょうか。試しにメールを送ってみましょう。
すると、こんなかんじにプッシュされてきます。
使い方を見ていて思った人もいたはず
「つまりこういうことか?『このGemはRubyのプログラム以外でも使える・・・・・・・・・』」 .V/// ___l _ V/,、ィf二三'iニニ|, |_ ┐ _l_ l .〉|l、 l `゚=/ :i./. |_ Х □_ 匚 L | У //'i'f ` ヽr> -〈三_=\ ヾ=/ ( その通りでございます ) ‐- 、,  ̄''ヾニ゙ ` ゙`
ちなみにRailsで使いたい場合は
config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { :address => "localhost", :port => 1025 }
をconfig/environments/development.rbに追加すればOK。PHPの場合は
SMTP = localhost smtp_port = 1025 sendmail_path = "/usr/sbin/sendmail -t -i"
をphp.iniに書き込めばいいようです。
Djangoの場合は環境設定で「EMAIL_PORT」を1025にするだけでいいようで、他は既定値でも大丈夫です。
# 設定ファイルに書き足す EMAIL_PORT = 1025 # あとはいつもどおり from django.core.mail import send_mail send_mail('Subject here', 'Here is the message.', 'from@example.com', ['to@example.com'], fail_silently=False)
電子メールの送信 — Django v1.0 documentation
node.jsの場合はNodemailerを使って、
var mailer = require("nodemailer"); var mailOptions = { from: "test@example.com", to: "test@hogehoge.com", subject: "こちら、幸福安心委員会です。", html: "幸せすぎて、恐いわー。" } var smtp = mailer.createTransport("SMTP", { port: 1025 }); // ポートだけ設定すればOK smtp.sendMail(mailOptions, function(error, response) { if (error) { console.log(error); } else { console.log("Message sent: " + response.message); } smtp.close(); });
みたいな感じでやるとよさげです*1。
andris9/Nodemailer · GitHub