デコードしよう
デコード
前回までで、ヘッダーの内容を変数に取得することができました。
件名や宛先など、値に日本語が含まれる場合、エンコードして送付されてきます。
この場合、正しくデコードしてあげる必要があります。
デコードするには、ライブラリが必要です。
ここでは「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行目でデコードをしています。