2012.02.01 加筆訂正

Windows7 64bit上のxamppで開発環境を構築していたところ、
xamppに付属しているsendmail.exeでメールを送信できなくて困った。
コマンドプロンプトが表示されたままになるだけでメールが送信されない。
互換性の設定をいじってみたがまったく症状は改善されない。
そこで、php.iniに直接SMTPとポートを指定するとメールは送信できるものの、osCommerceではBare LFsに関するエラーがでる。

しかたなく、面倒そうなxamppに付属していたもうひとつのメール関連ソフトのMercury/32(Mercury Mail Transport System)を利用することにした。設定する箇所がわからず、とまどったが、正しく設定するとすんなりと動作してメールも送信できるようになった。
Mercury/32を動作させるにはphp.iniとMercury/32の設定が必要だ。
以下、設定用のメモ。

phpの設定
まず、PHPからMercuryに接続するための設定をphp.iniのメール関連の設定箇所で下記のように記述して、apacheを再起動します。

[php]

[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25;

; For Win32 only.
sendmail_from = あなたのメールアドレス

[/php]

Mercury管理画面の表示
次に、Mercury管理画面で、MercuryがPHPから受け取ったメールを中継するための設定を行います。
xamppのコントロールパネルを起動してMercuryの横の[Start]をクリックします。
「Running」と表示されたら、[Admin]をクリックして管理画面を表示します。

Mercuryの設定
上部メニューバーから[Configuration]→[Protocol Modules]を選択します。
ここで「MercuryS SMTP server」と「MercuryC SMTP relaying client」をチェックして残りの項目はすべてチェックを外します。
Mercuryをここで再起動すると必要な画面だけに整理されます。

メール中継用の設定
上部メニューバーから[Configuration]を選択します。
メニュー内から「MercuryS SMTP Server」と「MercuryC SMTP client」という項目を探してください。

はじめに「MercuryS SMTP Server」を選択して画面を表示します。
上部タブの「Connection control」を選択してください。
「Do not permit SMTP relaying of non-local mail」と「Authenticated SMTP connections may relay mail」 のチェックが外れていることを確認してください。あとはデフォルトのまま使用します、

次にメニューから[MercuryC SMTP client]を選択します。
「MercuryC SMTP client」には利用しているインターネット接続業者が指定する内容を設定します。設定画面では、以下の項目を入力します。

[php]

SMTP “Smart” Host details
Smart host name:あなたのSMTPサーバ
Connect to TCP/IP port:587

Credentials for SMTP Authentication, if required
Username:メール送信用のID
Password:パスワード

[/php]