ジオシティーズでsendmailを使う

ジオプラスで sendmail:
ウェブサイトを運用していて、連絡用メールアドレスを表示する必要を感じますが、困るのは変なスパムメールが増えること。 毎日100通を超えるスパムメールがやって来ます。 困っていましたが、ジオプラスで sendmail が使えることがわかり、一度作成してみました。 でも失敗・・・。 今回は何とか使えるようになりましたので、メモを残しておきます。
テストPHP:
ジオプラスでは下記内容を適当な「ファイル名.php」としてルートにでもFTP転送して下さい。
あなたのホームページが 「http://www.geocities.jp/○×△/」から始まる場合は、
「http://cgi.geocities.jp/○×△/ファイル名.php」 にアクセスすると、メールを送ることが出来ます。
「mb_convert_encoding」分は「AUTO」でダメな場合、「AUTO」部にエンコードを直接指定して下さい。
<?php
	// mb_send_mail() でエンコードする際に使用。「ja」の場合は、ISO-2022-JP
	mb_language('ja'); 

	// mb_internal_encoding("SJIS"); // 内部エンコーディング設定
	// mb_internal_encoding("EUC-JP"); // 内部エンコーディング設定
	// mb_internal_encoding("UTF-8"); // 内部エンコーディング設定

	// 現在の内部文字エンコーディングを表示
	echo mb_internal_encoding();

	// 送信元アドレス(ジオプラスで設定しているアドレス)
	$from     = 'xxxx@yahoo.co.jp';
	// 送信元アドレス(ジオプラスで設定しているアドレス)
	$reply_to = 'xxxx@yahoo.co.jp';
	// 送信元アドレス(ジオプラスで設定しているアドレス)
	$to       = 'xxxx@yahoo.co.jp';

	$header   = "From: $from\n";
	$header  .= "Reply-To: $reply_to\n";
	$header  .= "X-Mailer: myphpMail ". phpversion(). "\n";

	$subject  = "ウェブからのTESTメッセージ";
	$message  = "テストメール\n";
	$message .= "Hallo!\n";

	// これがないと文字化けする時があった
	$subject = mb_convert_encoding($subject, "ISO-2022-JP","AUTO");
	// これがないと文字化けする時があった
	$message = mb_convert_encoding($message, "ISO-2022-JP","AUTO");

	mb_send_mail($to, $subject, $message, $header);
?>
画像認証(CAPTCHA)付きメールフォーム「 pFormMail-G 」設置:
上記のように「sendmail」を使用すれば、メールアドレスを公開せずにメールを送ってもらえるようになります。
しかし、メールフォームを利用するとロボットによるスパムメールは避けることが出来ません。
そこで、画像認証付きメールフォーム「 pFormMail-G 」を使用しようとしましたが、画像認証がうまく作動しませんでした。
いろいろ調べると「$_session」を使用する場合ジオシティーズではルートに「phpsession」というフォルダを作成しなければならないとのこと。
早速FTPで作成して動作確認すると、使用できるようになりました。
ただし、文字化けが発生しましたので少し改造しています。
PHPのエンコードはUTF-8にしました。
ジオプラスで実際に使用している画像認証(CAPTCHA)付きメールフォーム「 pFormMail-G 」
ちなみに画像認証は「kcaptcha」というソフトを利用しているようです。

【31行目付近】

// メール送信先アドレス
define(MAIL_TO, '○×△@yahoo.co.jp');

// メール送信元アドレス
define(MAIL_FROM, '○×△@yahoo.co.jp');

// メールのサブジェクト
define(SUBJECT, '■ウェブページからのお問い合せ■');

// 送信終了時にリダイレクトする URI の指定
define(DONE_URI, 'http://www.geocities.jp/○※□△/');

// 必須項目
$REQUIRED_PARAMETERS = array('E-MAIL','お名前','ふりがな(お名前)','送信内容');

// メールアドレスとしての形式を検査する項目
$EMAIL_PARAMETERS = array('E-MAIL');

// 控えを送信するメールアドレスを記載したパラメータ名 (空の場合はメールを送らない)
define(COPY_ADDRESS_PARAMETER, '');

// ここで記載したパラメータ名の値をメールの送信元とする (空の場合は MAIL_FROM を送信元とする)
define(MAIL_FROM_PARAMETER, '');

// 画像認証のパラメータ名 (空の場合は画像認証を使用しない)
define(CAPTCHA_PARAMETER, '画像認証');


------------------------------------------------------------------------------------------
【70行目付近】
/* //////////////////////////////////////////////////////////////////
 *                           プログラム本体
 * //////////////////////////////////////////////////////////////////
 */
// ■追加■↓↓↓↓
 mb_language('ja'); // 内部文字エンコーディング設定
// ■追加■↑↑↑↑


------------------------------------------------------------------------------------------
【178行目付近】
	$additional_headers = "From: " . get_from_address($params) . "\n";
// ■追加■↓↓↓↓
	$SUBJECT = mb_convert_encoding($SUBJECT, "ISO-2022-JP","AUTO");	// 件名のコード変換
	$body    = mb_convert_encoding($body, "ISO-2022-JP","AUTO");	// 内容のコード変換
// ■追加■↑↑↑↑

HOMEへ