« Google App Engine | トップページ | 人生劇場 »

2010/12/25

form2mailをUTF-8で使用する

Webサイトの問い合わせをメールで受け取る方法の一つにform2mailというのがあるようです。

マルチパート対応フォームメール

UTF-8で書いたWebサイトにお問い合わせページを設置するのにform2mailを使用しなくてはならなかったのですが、SJISとEUCにしか対応していなかったので、UTF-8で使えるように改造してみました。

Webで検索してみるといくつか方法があったのですが、どれもいまひとつな感じ。そこで、変更してみたらそれほど難しくなかったので、手順を公開してみます。

まず、form2mail.cgiはSJISで書かれているので、これをUTF-8で保存しなおします。
次に、日本語の文字コードを変換している部分を無効にし、UTF-8をそのまま送るように変更しました。

それほどたくさん書き換えたわけでもないので、変えたところを下記に列挙します。

--- 97行目 ---
#■このスクリプトを設置する日本語コード (sjis,euc) ※ヘッダ出力設定と合わせること
#
$convert = 'utf-8';

#■ヘッダ出力設定  $header = <<"EOF"; の次の行から EOF の前の行に書く
#  <TITLE>〜</TITLE> はブラウザのタイトルバーに表示される
#
$header = <<'EOF';
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<TITLE>フォームメール送信</TITLE>
EOF
--- 275行目 ---
	#&jcode'convert(*name,$convert);
--- 266行目 ---
			#&jcode'convert(*value,$convert);
--- 440行目 ---
	push(@MailValue,"Content-Transfer-Encoding: 8bit\n");
--- 534行目 ---
	push(@MailValue,"Content-Type: text/plain; charset=\"utf-8\"\n");
--- 581行目 ---
	$BODY .= "Content-Transfer-Encoding: 8bit\n";
	$BODY .= 'Content-Type: text/plain; charset="utf-8"' . "\n";
--- 700行目 ---
	#jcode::convert(\$line,'jis','sjis','z');
--- 704行目 ---
	return "Subject: =?utf-8?B?$line?=\n";

|

« Google App Engine | トップページ | 人生劇場 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/79953/50447537

この記事へのトラックバック一覧です: form2mailをUTF-8で使用する:

« Google App Engine | トップページ | 人生劇場 »