TOP

追加のデコード

本文がbase64の場合

 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: require './code/mimew.pl';
 7: use File::Basename qw(basename);
 8: $this_Filename = basename($0, '');	#ファイル名の取得
 9:
10: #---接続情報の設定-----
11: $pop_server="pop.grot3.com";	#POPサーバー名の指定(サーバ名は仮定です)
12: $account="grot3";		#POPサーバー用アカウント(仮定です)
13: $password="1234567";		#POPサーバー用パスワード(仮定です)
14:
15: #-----表示内容の分岐
16: $query=$ENV{QUERY_STRING};		#URLの引数部分の取得
17: if($query eq ""){			#引数が無い場合、ヘッダー表示(0)
18: 	&HeaderList(0);
19: } elsif ($query =~ m/page/i){		#引数(page)がある場合、指定ページを開く
20: 	@args=split(/=/ , $query);
21: 	&HeaderList(@args[1]);
22: } elsif ($query =~ m/mailno/i){		#引数(mailno)がある場合、メール本文を開く
23: 	unlink (<./tmp/*>);		#[./tmp]内のファイル(前回開いたメールの添付ファイル)を全て消す
24: 	@args=split(/=/ , $query);
25: 	&MailBody(@args[1]);
26: }
27:
28: #----------------------------------------------
29: #受信メール表示--(本文)
30: #----------------------------------------------
31: sub MailBody{
32: 		〜省略〜
33: 		#---領域内データ処理-----
34: 		if($Stage eq "bbody"){
35: 			if($filename eq ""){
36: 				if($Encoding =~m/base64/i){
37:					$resp64 .= $resp;
38:					if(length($resp) eq 60 && $resp!=~m/=/){next;};
39:					$resp = bodydecode($resp64,b64);$resp64 = "";
40: 				}
41: 				if($charset=~m/iso-2022-jp/i){$resp = jcode($resp)->mime_decode->sjis;}
42: 				if($charset =~m/utf-8/i){$resp = Jcode->new( $resp, "utf8")->sjis;}
43:
44: 				print "$resp\n";	#データが添付でない場合、そのまま画面に表示
45: 			}
		〜省略〜
46: }
47:
48: #----------------------------------------------
49: #ヘッダー処理(ヘッダー名を変数名とし、値を代入)
50: #----------------------------------------------
51: sub HeaderList{
		〜省略〜
52: }
53:
54: #----------------------------------------------
55: #接続
56: #----------------------------------------------
57: sub ConnectPop{
		〜省略〜
58: }
59:
60:  #----------------------------------------------
61:  #ヘッダー処理(ヘッダー名を変数名とし、値を代入)
62: #----------------------------------------------
63: sub MailHeader{
		〜省略〜
64: }
65:
66: #----------------------------------------------
67: #日付表示形式変更用	YYYY/MM/DD hh:mm
68: #----------------------------------------------
69: sub Date{
		〜省略〜
70: }
メモ:
36〜37行目で、base64の場合のデータを結合する。

base64の値が終わる場合、"="(イコール)が登場する。また、60桁では無い行が登場する。
38行目で、これを検索値として現れたら結合したデータをデコードする。

※通常は本文をbase64にする意味はないかと思うが、これでSMNP自動送信するシステムもあったため、追加した。


<前へ  11  次へ>