fake sendmail for windows を使って、PHP でごく普通に( mb_send_mail で )メール送信

fake sendmail は、XAMPP に同梱されています

メールサーバは、フリーメールで可能で、簡単な設定で利用できます。以下のサンプルは、さくらインターネット で動作確認しました。

▼ 手順

🔴 ダウンロード

配布元より、sendmail.zip をダウンロードして、解凍します。
( XAMPP には sendmail フォルダがあります )

🔴 sendmail.exe の動作テスト

まず、sendmail.ini をエディタで開いて、四つのエントリを指定します
▼ さくらインターネットを使う場合の設定

smtp_server=初期ドメイン
smtp_port=587
auth_username=ユーザ@初期ドメイン
auth_password=パスワード

※ smtp_ssl=auto となっており、デフォルトで ssl で実行され、使え無い場合は TLS を使おうとします

🔴 php.ini の設定

sendmail_path = "C:\tools\sendmail\sendmail.exe"

実際の sendmail.exe のパスを “” で囲んで指定します。
※ この場合、エラーログは “C:\tools\sendmail\error.log” です( デフォルト )

🔴 PHP のコード ( UTF8 BOM なしで記述します )

HTML の input 要素で type=”text” name=”fld_to”、name=”fld_subject”、name=”fld_body”、を form 要素の中に記述し、form 要素に method=”post” action=”以下の PHP のファイルのパス” を指定し、form 要素の中に input 要素で type=”submit” を指定したボタンを記述します。

mb_language("Japanese");
mb_internal_encoding("UTF-8");

$from_header = "From: " . mb_encode_mimeheader( mb_convert_encoding("差出人","iso-2022-jp") );

$from_header .= " <{$GLOBALS["mail"]}>";

$result = mb_send_mail($_POST["fld_to"], $_POST["fld_subject"], $_POST["fld_body"], $from_header);
if ( $result ) {
	$error = "OK";
}
else {
	$error = "ERROR";
}

print mb_language() . "
"; print $error;

$GLOBALS[“mail”] は、メール形式であれば良いですが、通常ならば auth_username で指定したメールアドレスを記述します。