TOP

デコードしよう

デコード

前回までで、ヘッダーの内容を変数に取得することができました。

件名や宛先など、値に日本語が含まれる場合、エンコードして送付されてきます。
この場合、正しくデコードしてあげる必要があります。
デコードするには、ライブラリが必要です。

ここでは「Jcode.pm」を使用しますので、ダウンロードしてフォルダ内に置き、パミッションを設定して下さい。
※ダウンロードして解凍すると、たくさんのファイルがありますが、「Jcode.pm」のみで動作します。
 1: #!/usr/bin/perl
 2: print "Content-type:text/html\n\n";
 3: print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">\n";
 4: use Socket;
 5: use Jcode;
 6: use File::Basename qw(basename);
 7: $this_Filename = basename($0, '');	#ファイル名の取得
 8:
 9: #---接続情報の設定-----
10: $pop_server="pop.grot3.com";	#POPサーバー名の指定(サーバ名は仮定です)
11: $account="grot3";		#POPサーバー用アカウント(仮定です)
12: $password="1234567";		#POPサーバー用パスワード(仮定です)
13:
14: #-----表示内容の分岐
15: $query=$ENV{QUERY_STRING};		#URLの引数部分の取得
16: if($query eq ""){			#引数が無い場合、ヘッダー表示(0)
17: 	&HeaderList(0);
18: } elsif ($query =~ m/page/i){		#引数(page)がある場合、指定ページを開く
19: 	@args=split(/=/ , $query);
20: 	&HeaderList(@args[1]);
21: }
22:
23: #----------------------------------------------
24: #受信メール表示--(ヘッダー一覧)
25: #----------------------------------------------
26: sub HeaderList{
		〜省略〜
27:	$To = jcode($To)->mime_decode->sjis;
28:	$From = jcode($From)->mime_decode->sjis;
29:	$Subject = jcode($Subject)->mime_decode->sjis;
30:	print "<TR><TD>$i</TD><TD>$From</TD><TD>$Subject</TD><TD>$Date</TD>\n";
		〜省略〜
31: }
32:
33: #----------------------------------------------
34: #接続
35: #----------------------------------------------
36: sub ConnectPop{
		〜省略〜
37: }
38:
39: #----------------------------------------------
40: #ヘッダー処理(ヘッダー名を変数名とし、値を代入)
41: #----------------------------------------------
42: sub MailHeader{
		〜省略〜
43: }
メモ:
unicodeのメールは今後増えていくことが想定されており、jcode.plではunicodeに対応していないので、
Jcode.pmを使用します。
3行目で、表示ページのデフォルト文字コードを指定。
5行目でJcode.pmの宣言
27〜29行目でデコードをしています。


<前へ  5  次へ>