LoginSignup
54
56

More than 5 years have passed since last update.

Vagrant上のCentOSからmail関数を使ってメールを送る

Posted at

VagrantでPHPのmail()を使いたい

タイトル通りです。PHPでmail()関数を使おうと思ったのですが、どうしたらいいかわからなかったので調べたことをメモ。

※PHPって書いてますけどほとんどLinuxの話です()

mail()関数の仕様

php.iniにsendmailのパスの設定があります。

php.ini
[mail function]
sendmail_path = /usr/sbin/sendmail -t -i

PHPのmail()関数は、sendmailコマンドを使ってメールを送信するそうです。
つまり、 sendmailが入ってなければメールを送れません。

sendmailが動いているかどうか確認

まずはsendmailにパスが通ってるかどうか確認してみましょう。

$ whereis sendmail

/usr/sbin/sendmailが出力されればパスが通っています。
存在しなければ、sendmailのインストールをしましょう。

sendmailのインストール

参考:http://programming-10000.hatenadiary.jp/entry/20130517/1368803251

yum install sendmail
yum install sendmail-cf

で、yumリポジトリからインストールしましょう。

sendmailのコピー

sendmailにSMTPの設定が必要です。
が、その前にsendmail.mcやcfを直接弄ってますが、念のためcpしておきましょう。

$ cd /etc/mail
$ cp -p sendmail.mc sendmail_yyyymmdd.mc
$ cp -p sendmail.cf sendmail_yyyymmdd.cf

yyyymmddは年月日を入れておきましょう(言わなくてもわかると思いますが)。

sendmailの設定

参考:http://makisuke.seesaa.net/article/9381075.html

sendmail.mcを編集してSMTPサーバを設定します。

$ vi sendmail.mc

この中にあるdnl define('SMART_HOST','smtp.your.provider')の先頭のdnlを削除し、smtp.your.providersmtp:使用するSMTPサーバドメインに変更します。

sendmail.mcの内容をsendmail.cfに適用

mcはcfのファイルを編集するためのマクロらしいので、mcを使ってcfを書き換える必要があります。

$ m4 sendmail.mc > sendmail.cf

適用したらsendmailを再起動しましょう。

$ /etc/init.d/sendmail restart

sendmailでメールが送れるか確認

mail()関数を使う前に、sendmailコマンドでメールが送れなければそもそもメールは送れません。

参考:http://d.hatena.ne.jp/shinjo-kou/20110125/1295948242

$ sendmail 送信先のメールアドレス
From: 送信元のメールアドレス
To: 送信先のメールアドレス
Subject: 件名
(空行)
文面
.(ドットで入力終了)

これで送信先メールアドレスにメールが送信できればsendmailの設定は完了です。

PHPによるメール送信

mail関数はマルチバイトによるメール送信をカバーしてないので注意しましょう。
mail関数の使い方は... ググって下さい!(おい)

※XAMPP環境の場合

XAMPP環境の人は、[mail function]の中にSMTP = localhostと書かれている場所があるので、そこをSMTPサーバのドメインに変更すればいけるはず、らしいです。
送れない場合は設定とかいろいろあるそうです。正直よく知りません()

54
56
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
54
56