XAMPPでローカルメールを送受信する
●動作環境
※執筆時点(2014年2月8日)で使用したバージョンです。
- Windows7(64)
- Xampp for Windows(v1.8.3)
- Mercury/32(v4.6)
- PHP(v5.5)
●事前準備
※Xamppの公式サイトより「Windows向けXAMPP v1.8.3 (PHP 5.5)」を入手してインストールします。
●Mercury/32の基本設定
- Mercury管理画面の起動
- XAMPPコントロールパネルでMercuryの[Start]をクリックして起動する
- 続けて[Admin]をクリックし、次ページ以降の各項目を設定する

- Protocol Modulesの設定
- メニューから「Configration」→「Protocol modules…」を選択する
- MercuryS、MercuryP、MercuryEのみをONにして[OK]をクリックする

- SMTP Serverの設定
- メニューで「Configration」→「MercuryS SMTP Server」を選択する
- 「Connection control」タブで[Add Restriction]をクリックする
- fromとtoに「127.0.0.1」と入力する
- 「Allow connections」を選択し、「Connections from this address range may relay mail through this server」をONにして[OK]をクリックする
- 「Relaying Control」で「Use strict local relaying restrictions」を ONにして[OK]をクリックする


- SMTP Clientの設定
- メニューで「Configration」→「Manage local users…」を選択する
- [Address discovery and DNS access]で「127.0.0.1」と入力して[Save]をクリックする

- メールユーザーの追加
- メニューで「Configration」→「Manage local users…」を選択する
- 次の要領で「test1」と「test2」のメールユーザーを登録する
- [Add]をクリック
- [Username]と[Personal name]に「test1(またはtest2)」と入力
- [Mail password]に「passwd」と入力して[OK]をクリック

- 最後に[Close]をクリックして保存する

- Mercuryの再起動
- 設定を変更した場合、XAMPPコントロールパネルよりMercuryの[Stop]をクリックし、再度[Start]をクリックして再起動して下さい。
- フォルダの確認
- 環境によって、メールデータ用とログデータ用のフォルダが自動作成されない場合があります。
- 次のフォルダが存在することを確認し、なければ手動で作成して下さい。
- メールデータ用 → C:\xampp\MercuryMail\QUEUE
- ログデータ用 → C:\xampp\MercuryMail\Logs
●メーラーによる動作確認
- アカウントの追加
- XAMPPが動いているPCで、メーラーの設定に次の項目を追加する
- SMTPサーバー → localhost(ポート:25)
- POP3サーバー → localhost(ポート:110)
- メールアドレス → test1@localhost
- パスワード → passwd
- セキュリティ認証 → しない
- 自分で自分宛にメールを送信し、正しく送受信できることを確認する
●PHPからのメール送信
- PHPからのメール送信準備
- PHPでは、mb_send_mail関数を利用して、メールを送信することができます。
- この関数は、sendmailコマンドを利用して、メールを送信します。
- このため、次の設定ファイルを変更し、Apacheを再起動する必要があります。
- PHPの設定ファイル → c:\xampp\php\php.ini
- sendmailの設定ファイル → c:\xampp\sendmail\sendmail.ini
- php.iniの設定
- c:\xampp\php\php.iniをエディタで開く
- [mail function]の項目に移動する
- 次の行のコメント文字(;)を削除する(1172行目)
- sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
- 続けて次の行にコメント文字(;)を付加する(1176行目)
- ;sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
- ファイルを保存してエディタを終了する
- sendmail.iniの設定
- c:\xampp\sendmail\sendmail.iniをエディタで開く
- 次の行を修正する
- 修正前:smtp_server=mail.mydomain.com
- ↓
- 修正前:smtp_server=localhost
- ファイルを保存してエディタを終了する
- ※修正後はApacheを再起動して下さい。
●メール送信のサンプル
<?php
mb_language("ja");
mb_internal_encoding("UTF-8");
$mailto = "test1@localhost"; // 宛先メールアドレス
$subject = "送信テスト"; // 件名
$content = "PHPからの送信テスト"; // 本文
$from = "postmaster@localhost"; // 差出人メールアドレス
$name = mb_encode_mimeheader("管理者"); //差出人の名前をMIME変換
$mailfrom ="From: " . $name . " <" . $from . ">\n";
if (mb_send_mail( $mailto, $subject, $content, $mailfrom )) {
echo "送信成功!";
} else {
echo "送信失敗";
}
?>
前のページへ