Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Vagrant 上の CentOS6.7 で mailcatcher を使う

More than 1 year has passed since last update.

環境

  • vagrant
  • CentOS 6.7
  • ruby 2.4.3
  • (CakePHP2.10)

やりたいこと

ローカルの環境からメールのテスト送信をしたい。mailcatcher だと便利だよ!と言われたので入れてみます。

手順

1. インストール

ruby は既に入ってます。

$ gem install mailcatcher

途中で一回怒られました。

.
.
Building native extensions.  This could take a while...
ERROR:  Error installing mailcatcher:
    ERROR: Failed to build gem native extension.
.
.
.
checking for sqlite3.h... no
sqlite3.h is missing. Try 'brew install sqlite3',
'yum install sqlite-devel' or 'apt-get install libsqlite3-dev'
.
.

なんか足りないっぽいので、言われたとおりに不足してるのを入れてあげる。

$ sudo yum install sqlite-devel

すると、今度は成功。

Done installing documentation for sqlite3, daemons, thin, skinny, mailcatcher after 2 seconds
5 gems installed

2. 起動

$ mailcatcher
Starting MailCatcher
==> smtp://127.0.0.1:1025
/home/vagrant/.rbenv/versions/2.4.3/lib/ruby/gems/2.4.0/gems/thin-1.5.1/lib/thin/server.rb:104: warning: constant ::Fixnum is deprecated
==> http://127.0.0.1:1080
*** MailCatcher runs as a daemon by default. Go to the web interface to quit.

3. ブラウザで確認

んで、メール受信画面をブラウザで見ようと思って、はたと気がついた。
これ……Vagrant上じゃん……?
http://127.0.0.1:1080
って書いてあるけど、このURLで見られるわけないじゃん……?

ためしにvagrantに割り振ってある 192.168.33.40:1080 にアクセスしてみるも、見られない。
調べて見ると、ポートを指定して mailcatcher を起動するやり方があるらしい。ので、それをやろうと思ったら。

$ mailcatcher --http-ip 192.168.33.40
Starting MailCatcher
~~> ERROR: Something's using port 1025. Are you already running MailCatcher?
==> smtp://127.0.0.1:1025
==> http://192.168.33.40:1080

既に1025ポート使われてるんですけど、って怒られた。うん、知ってた。
一回 mailcatcher 落とそうと思ったら、どうやらPID調べて kill しないといけないらしい……?

ので、とりあえずPID調べてkillする。

$ netstat -tulpn | grep :1025
$ kill -9 6253

そして、今度はIPアドレスを指定して起動。

$ mailcatcher --http-ip=192.168.33.40

ブラウザでアクセスしてみます。
http://192.168.33.40:1080

スクリーンショット 2018-01-29 14.05.36.png

出来たー!

ついで:メール送信の設定

CekePHP2.10の場合、メール設定はこんな感じ。
ポートを1025に指定したら良いようです。

class EmailConfig
{
  public $mailcatcher = array(
        'transport' => 'Smtp',
        'from' => 'example@hoge.com',
        'host' => '127.0.0.1',
        'port' => 1025,
        'timeout' => 30,
        'client' => null,
        'log' => true,
        'charset' => 'utf-8',
        'headerCharset' => 'utf-8',
        'template' => 'default',
        'layout' => 'default',
    );  
}

参考

binthec
PHPer。ぽんこつです。 CakePHP2〜4系がメイン。Laravelもちょっと。最近は CakePHP3 〜 4 ばっかり触ってます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away