スマートフォンやhtml5+CSS3など新技術に四苦八苦。jQuery、AjaxなどJavaScriptも難しいですね。そんなWebに悩む人のネタ帳です。

例えばxamppなどを利用してローカルでメールフォームなどを開発する場合、その動作を確認できなくて困ることがあります。
原因は、単純にローカルマシン自身がSMTPサーバではないからです。

xamppにはその問題を解消するために「Mercury」というソフトが同胞されています。これまで、幾度となく何度もチャレンジしたのですが、うまくメールを送信できませんでした。
しかし、今回、設定に成功したのでメモとして残しておきます。

ローカル開発環境の詳細について

今回、ローカル開発環境におけるメール送信環境を実現したのは以下の環境です。

OS Windows7 64bit
XAMPP 1.7.7
Apache 2.0
PHP 5.3.8
Mercury 4.62

もちろんApache、PHP、Mercuryはxamppにデフォルトで同胞されているものを使用しますが、参考までに。

メールが送信されるしくみ

PHPの関数mb_send_mailなどでメールを送信すると、コマンドsendmailなどを使ってメールが送信されるのが通常です。

今回のMercuryを使う場合は、PHPでメールが送信されるとMercuryを経由して、Mercuryで設定したSMTPサーバにメールが投げられます。
つまり、Mercuryはローカルプログラムから受け取ったメールを、メーラーソフトと同じようにしてメールを送信しているわけです。

したがって、この環境を実装するためには、SMTPサーバが必要です。もちろん、今利用しているISPのSMTPサーバで問題ありません。その他メールサービスを受けていれば、そちらでもいいです。

PHPの設定

まず、PHPの設定を変更して、Mercuryにメールが流れるようにします。
ファイル「php.ini」を開いて、以下の項目を設定するだけです。

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = (送信元として利用するメールアドレス)

設定を有効にするには、Apacheを再起動します。

Mercuryの設定

Mercuryを起動し、メニューの「Configuration」から「Protocol modules…」を選択して、利用するプロトコルをチェックします。今回利用するのは「MercuryS SMTP server」と「MercuryC SMTP relaying client」の2つです。

次に、メニューの「Configuration」から「MercuryS SMTP Server」を選択して、タブ「Connection control」の「Do not permit SMTP relaying of non-local mail」のチェックを外します。

さらに、メニューの「Configuration」から「MercuryC SMTP Client」を選択して、「SMTP “Smart” Host details」の「Smart host name」と「Connection port/type」を設定します。これは、メーラーのSMTPの設定で、サーバ名とポート番号を設定しますが、それと同じでいいです。
同じ設定画面で「Credentials for SMTP Authentication, if required」の「Login username」と「Password」を設定します。これも、メーラーのSMTPの設定で、SMTP接続に必要なユーザ名とパスワードを設定します。

以上、これらの設定を有効にすることで、ローカル開発環境からPHPプログラムなど利用して外部にメールを送信することができます。

このエントリーをはてなブックマークに追加

Comment

Comment Form

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Monthly Archives

Search