WML020.php 7.6 KB
<?php 
//*****************************************************************************
//* 
//* プログラム名:Webメール
//* プログラムID:WML020.php
//* 機能        :受信メール一覧
//* 作成者      :
//* 
//*****************************************************************************
header('Content-Type: text/html; charset=EUC-JP');
include("include/session_start.inc");
include("include/SessionChk.inc");
include("include/STRING.inc");
include('./include/smarty.conf');

//**** メニュー ****//
include("inc/header.inc");
include("menu_opacity.php");

//*** JavaScript ***//
include("inc/WML000.inc");
include("inc/WML001.inc");

//**** DB接続 ****//
$strDBinc="./include/dbcon.inc";
include($strDBinc);


//*****************************************************************************
//* 文字変換
//*****************************************************************************
function subRepURI($prmStr){
		$prmStr = str_replace("+", "EgruProPlus", $prmStr);
		$prmStr = str_replace("&", "EgruProAnp", $prmStr);
		$prmStr = str_replace("%", "EgruProPer", $prmStr);
		$prmStr = str_replace("#", "EgruProNum", $prmStr);
		$prmStr = str_replace("'", "EgruProSing", $prmStr);
		$prmStr = str_replace('"', "EgruProDoub", $prmStr);
		$prmStr = str_replace("$", "EgruProDoll", $prmStr);
		$prmStr = str_replace("-", "EgruProhyph", $prmStr);		
		return $prmStr;	
}

//曜日配列
$youbi=array("日","月","火","水","木","金","土");

//メール情報取得
$strSQLseq="Select * from mail_TBL Where syain_cd='$PHP_SYAIN_CD'";
$objRecseq = pg_exec($strSQLseq);
if($objRecseq==false){
		echo("SQL実行に失敗しました(SELECT)");
		exit;
}
if (pg_numrows($objRecseq) > 0){
		$objmail = pg_fetch_object($objRecseq, 0);
		$strMailAdd=$objmail->mail_add;
		$intSrvadd=$objmail->pop3_add;
		$strUserName=$objmail->mail_name;
		$strPASSWORD=$objmail->mail_pass;

		// 登録サーバー名取得
		$strSQLseq="Select * from mailAdmin_TBL Where srv_id=".$intSrvadd." and srv_flg=2";
		$objRecseq = pg_exec($strSQLseq);
		if($objRecseq==false){
			echo("SQL実行に失敗しました(SELECT)");
			exit;
		}
		if (pg_numrows($objRecseq) > 0){
			$objmail = pg_fetch_object($objRecseq, 0);
			$strSrvName=$objmail->srv_add;
		}
}	

$userid = $strUserName;
$passwd = $strPASSWORD;
$server = $strSrvName;
$strMailAdd = $strMailAdd;
$list_num = 10;

//サーバ内の全メール取得
$strMILSQL="Select send_flg8,send_flg9 from sendinfo_tbl Where syain_cd='$PHP_SYAIN_CD'";
$objMILData = pg_exec($strMILSQL);
if($objMILData==false){
		echo("SQL実行に失敗しました(SELECT)");
		exit;
}
$delmail_flg=0;
$dispmail_flg=10;
if (pg_numrows($objMILData) > 0){
		$objchkMail = pg_fetch_object($objMILData, 0);
		$delmail_flg  = $objchkMail->send_flg9;
		if ($objchkMail->send_flg8=="0"){
			$dispmail_flg=10;
		}else{
			$dispmail_flg = $objchkMail->send_flg8;
			if ($dispmail_flg==""){
				$dispmail_flg=10;
			}
		}
}else{
		$delmail_flg=0;
		$dispmail_flg=10;
}

//受信メッセージ取得
$strSQLall="Select from_addr,from_name,mail_id,get_date,header,subject,comment,mail_size,kind_flg,temp_flg from mail_get_tbl ";
$strSQLall=$strSQLall."Where syain_cd='$PHP_SYAIN_CD' and del_flg=0 Order by get_date Desc";
$objRecall = pg_exec($strSQLall);
if($objRecall==false){
		echo("SQL実行に失敗しました(SELECT)");
		exit;
}

//メールの合計サイズ取得
$str_total=0;
for ($intCnt = 0; $intCnt < pg_numrows($objRecall); $intCnt++) {
		$objsize = pg_fetch_object($objRecall, $intCnt);
		$str_total=$str_total+$objsize->mail_size;
}

$total_num=pg_numrows($objRecall);
$str_totalsize = format_size($str_total);

//ボタン設定
$strButton="";
if ($start_from!="") {
		$init_num = $start_from;
} else {
		$init_num = 0;
}

$list_num=$dispmail_flg;
if ($init_num!=0) {
		$intCnt=$init_num - $list_num;
		$strButton='<input type="button" value="前の'.$dispmail_flg.'件" onclick="WML020_Page('.$intCnt.');">';
}
$strButton.='<input type="button" value="先頭へ戻る" onclick="WML020_Top();">';
if ($total_num > $start_from+$list_num) {
		$intCnt=$init_num + $list_num;
		$strButton.='<input type="button" value="次の'.$dispmail_flg.'件" onclick="WML020_Page('.$intCnt.');">';
}

$intCnt=0;
for ($num=$init_num; $num < pg_numrows($objRecall); $num++){
		$objData = pg_fetch_object($objRecall, $num);
		if ($dispmail_flg<=$intCnt){
				break;
		}

		//メールID
		$mail_id[$intCnt]=subRepURI($objData->mail_id);

		//送信者
		$str_From[$intCnt] = $objData->from_name;
		$str_Addr[$intCnt] = $objData->from_addr;

		//送信者が空の場合は、解析&UPDATE
//		if(trim($str_From) == ""){
		if(trim($str_From[$intCnt]) == ""){
				$header_list = parse_header($objData->header);
				//ヘッダー取得
				if (isset($header_list['from'])) {
						$str_From[$intCnt]=decode_mimeheader(get_name($header_list['from']), 1);
						$str_From[$intCnt]=ereg_replace("[\'\"\;]", "", $str_From[$intCnt]);
						$str_Addr[$intCnt]=decode_mimeheader($header_list['from'], 1);
						$str_Addr[$intCnt]=ereg_replace("[\'\"\;]", "", $str_Addr[$intCnt]);
						$str_Addr[$intCnt]= str_replace("\"","",$str_Addr[$intCnt]);
						$intpoint = strlen($str_From[$intCnt]);            
						$str_Addr[$intCnt] = trim(substr($str_Addr[$intCnt],$intpoint));            
						if (substr($str_Addr[$intCnt],0,1)=="@"){
							$str_Addr[$intCnt] = htmlspecialchars(decode_mimeheader($header_list['from'], 1), ENT_QUOTES);
						}
				} else {
						$str_From[$intCnt] = '(Unknown)';
						$str_Addr[$intCnt] = '';
				}
				$strSqlTemp  = "update mail_get_tbl set from_name = '".$str_From[$intCnt]."', from_addr = '".$str_Addr[$intCnt];
				$strSqlTemp .= "' where mail_id = '".addslashes($objData->mail_id)."' and get_date = '".$objData->get_date;
				$strSqlTemp .= "' and syain_cd='".$PHP_SYAIN_CD."'";
				$objRecTemp = pg_exec($strSqlTemp);
				if($objRecTemp==false){
						echo("SQL実行に失敗しました(UPDATE)");
						exit;
				}
		}

		$str_From[$intCnt]=htmlspecialchars($str_From[$intCnt]);

		//日付編集
		$str_year=substr($objData->get_date,2,2);
		$str_mon=substr($objData->get_date,4,2);
		$str_day=substr($objData->get_date,6,2);
		$str_hour=substr($objData->get_date,8,2);
		$str_min=substr($objData->get_date,10,2);
		$intYoubi=date("w", mktime (0,0,0,$str_mon,$str_day,$str_year));
		$strDate[$intCnt]=$str_year."/".$str_mon."/".$str_day."(".$youbi[$intYoubi].")"." ".$str_hour.":".$str_min;
				
		//サイズ
		$strsize[$intCnt]=format_size($objData->mail_size);

		//長文ファイルチェック
		$strName[$intCnt]=htmlspecialchars(LINE_DEL($objData->subject,30));
		if ($strName[$intCnt]==""){
				$strName[$intCnt]="(no subject)";
		}
		//既読フラグ
		if ($objData->kind_flg==0){
				$strColor[$intCnt]=1;
		}else{
				$strColor[$intCnt]=0;
		}

		//添付ファイル
		if ($objData->temp_flg==1){
				$temp_flg[$intCnt]=1;
		}else{
				$temp_flg[$intCnt]=0;
		}
		$Dt_Seq[$intCnt]=$intCnt;
		$intCnt=$intCnt+1;
}


//未読メッセージ取得
$strSQLmi="Select mail_id from mail_get_tbl Where syain_cd='$PHP_SYAIN_CD' and kind_flg=0 and del_flg=0";
$objRecmi = pg_exec($strSQLmi);
if($objRecmi==false){
		echo("SQL実行に失敗しました(SELECT)");
		exit;
}
$PhpMidokuCnt=pg_numrows($objRecmi);

//表示サイズ設定
$list_num=$dispmail_flg;

$o_smarty->assign('total_num',$total_num);
$o_smarty->assign('str_totalsize',$str_totalsize);

$o_smarty->assign('mail_id',$mail_id);
$o_smarty->assign('str_From',$str_From);
$o_smarty->assign('str_Addr',$str_Addr);
$o_smarty->assign('strDate',$strDate);
$o_smarty->assign('strsize',$strsize);
$o_smarty->assign('strName',$strName);
$o_smarty->assign('strColor',$strColor);
$o_smarty->assign('temp_flg',$temp_flg);
$o_smarty->assign('Dt_Seq',$Dt_Seq);

$o_smarty->assign('strButton',$strButton);
$o_smarty->assign('init_num',$init_num);
$o_smarty->assign('strChkDat',$strChkDat);

$o_smarty->assign('PHP_TITLE_NAME',$PHP_TITLE_NAME[18]);
$o_smarty->display('WML020.tpl');

?>