|
|
<?
# **********************************************************
# 外部ファイル
# **********************************************************
require_once( "common.php" );
require_once( "model.php" );
# **********************************************************
# 定数定義
# **********************************************************
define( 'PASS_MESSAGE', 1 );
define( 'VIEW_MESSAGE', 'viewmessage.php' );
define( 'VIEW_CUR', 'view.php' );
# **********************************************************
# グローバル変数
# **********************************************************
$ErrMessage = '';
$OutData = '';
$Mail = FALSE;
# **********************************************************
# 初期処理
# **********************************************************
if ( !extension_loaded( "imap" ) ) {
dl("php_imap.dll");
}
if ( !extension_loaded( "mbstring" ) ) {
dl("php_mbstring.dll");
}
$Mail = imap_open("{サーバアドレス:110/pop3}INBOX", "ユーザー", "パスワード");
if ( !$Mail ) {
$ErrMessage = "メールボックスをオープンできません";
$_POST['GNO'] = PASS_MESSAGE;
}
# **********************************************************
# 処理コントロール
# **********************************************************
if ( $ErrMessage == "" ) {
CheckDataHead( );
if ( $ErrMessage != "" ) {
$_POST['GNO'] = PASS_MESSAGE;
}
else {
GetData( );
if ( $ErrMessage != "" ) {
$_POST['GNO'] = PASS_MESSAGE;
}
}
}
# **********************************************************
# ビュー
# **********************************************************
switch( $_POST['GNO'] ) {
case PASS_MESSAGE:
require_once( VIEW_MESSAGE );
break;
default:
EditDataHead( );
require_once( VIEW_CUR );
break;
}
if ( !$Mail ) {
imap_close( $Mail );
}
# **********************************************************
# デバッグ
# **********************************************************
#DispData();
?>
| |
|
|
|
|
<?
# **********************************************************
# データの読出し
# **********************************************************
function GetData( ) {
global $ErrMessage;
global $MessageCount;
global $Mail;
global $OutData;
# メッセージのヘッダ情報の概要
$MailList = imap_fetch_overview( $Mail, "1:$MessageCount" );
# $MailList = imap_fetch_overview( $Mail, "1:10" );
while ( list($key,$val) = each ($MailList) ) {
$OutData .= "<TR>\n";
$OutData .= "<TD class=MyCell>";
# UID
$OutData .= $val->uid;
$OutData .= "</TD>\n";
$OutData .= "<TD class=MyCell>";
# メッセージ番号
$OutData .= $val->msgno;
$OutData .= "</TD>\n";
$OutData .= "<TD class=MyCell nowrap>";
# 送信者
$OutData .= '<A href="../body/control.php?uid=';
$OutData .= $val->uid;
$OutData .= '" target=NewWindow>';
$OutData .= htmlentities( DecodeData( $val->from ) );
$OutData .= "</TD>\n";
$OutData .= "<TD class=MyCell nowrap>";
# 件名
$OutData .= DecodeData( $val->subject );
$OutData .= "</TD>\n";
$OutData .= "<TD class=MyCell nowrap>";
# 受信日時
$OutData .= $val->date;
$OutData .= "</TD>\n";
$OutData .= "<TD class=MyCell nowrap>";
# サイズ(バイト数)
$OutData .= $val->size;
$OutData .= "</TD>\n";
# フラグ
$OutData .= "<TD class=MyCell>";
$OutData .= $val->recent;
$OutData .= "</TD>\n";
$OutData .= "<TD class=MyCell>";
$OutData .= $val->answered;
$OutData .= "</TD>\n";
$OutData .= "<TD class=MyCell>";
$OutData .= $val->deleted;
$OutData .= "</TD>\n";
$OutData .= "<TD class=MyCell>";
$OutData .= $val->seen;
$OutData .= "</TD>\n";
$OutData .= "<TD class=MyCell nowrap>";
# メッセージID
$OutData .= $val->message_id;
$OutData .= "</TD>\n";
$OutData .= "</TR>\n";
}
}
# **********************************************************
# デコード
# **********************************************************
function DecodeData( $Value ) {
# スペースで分割
$Token = explode( " ", $Value );
$Ret = "";
while ( list($key,$val) = each ($Token)) {
# デコード対象のテキスト
if ( strtoupper(substr( $val, 0, 13 )) == "=?ISO-2022-JP" ) {
# BASE64 -> JIS へのデコード
$JisText = imap_mime_header_decode( $val );
for( $i = 0; $i < count($JisText); $i++ ) {
# JIS -> SJIS へのテコード
$Ret .= mb_convert_encoding(
$JisText[$i]->text,
"SJIS",
"JIS"
);
}
}
# ASCII
else {
$Ret .= $val . " ";
}
}
return $Ret;
}
# **********************************************************
# 画面の編集
# **********************************************************
function EditDataHead( ) {
}
# **********************************************************
# エラーチェック
# **********************************************************
function CheckDataHead( ) {
global $ErrMessage;
global $Mail;
global $MessageCount;
$MessageCount = imap_num_msg( $Mail );
if ( $MessageCount == 0 ) {
$ErrMessage = "メールボックスは空です";
}
}
?>
| |
|
|
|
|
<SCRIPT language=JavaScript>
// *********************************************************
// フォームのチェック
// *********************************************************
function CheckData() {
return true;
}
</SCRIPT>
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">
<TITLE>PHP 雛形</TITLE>
<STYLE>
.MyHead {
background-color:silver;
font-size:12;
}
.MyCell {
background-color:white;
font-size:12;
}
</STYLE>
</HEAD>
<BODY>
<FORM
name=frmMain
method=GET
action=control.php
onSubmit='return CheckData()'
>
<TABLE border=0 bgcolor=black cellspacing=1 cellpadding=5>
<TR>
<!-- *******************************************************
タイトル
******************************************************** -->
<TD class=MyCell>メッセージ数</TD>
<!-- *******************************************************
件数表示
******************************************************** -->
<TD class=MyCell>
<?= $MessageCount ?>
</TD>
</TR>
</TABLE>
<br>
<!-- *******************************************************
画面定義
******************************************************** -->
<TABLE border=0 bgcolor=black cellspacing=1 cellpadding=5>
<TH class=MyHead>UID</TH>
<TH class=MyHead></TH>
<TH class=MyHead>送信者</TH>
<TH class=MyHead>件名</TH>
<TH class=MyHead>受信日時</TH>
<TH class=MyHead>size</TH>
<TH class=MyHead>new</TH>
<TH class=MyHead>ans</TH>
<TH class=MyHead>del</TH>
<TH class=MyHead>seen</TH>
<TH class=MyHead>message_id</TH>
<?= $OutData ?>
</TABLE>
</FORM>
</BODY>
</HTML>
| |
|
|
|
|
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">
<TITLE>メッセージ表示専用</TITLE>
<STYLE>
.MyCell {
background-color:silver
}
</STYLE>
</HEAD>
<BODY>
<SPAN style='color:blue'><?= $ErrMessage ?></SPAN>
<SPAN style='color:black;font-weight:bold'><?= $Message ?></SPAN>
</BODY>
</HTML>
| |
|
|
|
|
<?
# **********************************************************
# データの読出し
# **********************************************************
function GetData( ) {
global $ErrMessage;
global $MessageCount;
global $Mail;
global $OutData;
# メッセージのヘッダ情報の概要
$MailList = imap_fetch_overview( $Mail, "1:$MessageCount" );
# $MailList = imap_fetch_overview( $Mail, "1:10" );
while ( list($key,$val) = each ($MailList) ) {
$OutData .= "<TR>\n";
$OutData .= "<TD class=MyCell nowrap>";
# UID
$OutData .= '削除マーク<INPUT type=submit name=send value="';
$OutData .= $val->uid;
$OutData .= '">';
$OutData .= "</TD>\n";
$OutData .= "<TD class=MyCell>";
# メッセージ番号
$OutData .= $val->msgno;
$OutData .= "</TD>\n";
$OutData .= "<TD class=MyCell nowrap>";
# 送信者
$OutData .= '<A href="../body/control.php?uid=';
$OutData .= $val->uid;
$OutData .= '" target=NewWindow>';
$OutData .= htmlentities( DecodeData( $val->from ) );
$OutData .= "</TD>\n";
$OutData .= "<TD class=MyCell nowrap>";
# 件名
$OutData .= DecodeData( $val->subject );
$OutData .= "</TD>\n";
$OutData .= "<TD class=MyCell nowrap>";
# 受信日時
$OutData .= $val->date;
$OutData .= "</TD>\n";
$OutData .= "<TD class=MyCell nowrap>";
# サイズ(バイト数)
$OutData .= $val->size;
$OutData .= "</TD>\n";
# フラグ
$OutData .= "<TD class=MyCell>";
$OutData .= $val->recent;
$OutData .= "</TD>\n";
$OutData .= "<TD class=MyCell>";
$OutData .= $val->answered;
$OutData .= "</TD>\n";
$OutData .= "<TD class=MyCell>";
$OutData .= $val->deleted;
$OutData .= "</TD>\n";
$OutData .= "<TD class=MyCell>";
$OutData .= $val->seen;
$OutData .= "</TD>\n";
$OutData .= "<TD class=MyCell nowrap>";
# メッセージID
$OutData .= $val->message_id;
$OutData .= "</TD>\n";
$OutData .= "</TR>\n";
}
}
# **********************************************************
# デコード
# **********************************************************
function DecodeData( $Value ) {
# スペースで分割
$Token = explode( " ", $Value );
$Ret = "";
while ( list($key,$val) = each ($Token)) {
# デコード対象のテキスト
if ( strtoupper(substr( $val, 0, 13 )) == "=?ISO-2022-JP" ) {
# BASE64 -> JIS へのデコード
$JisText = imap_mime_header_decode( $val );
for( $i = 0; $i < count($JisText); $i++ ) {
# JIS -> SJIS へのテコード
$Ret .= mb_convert_encoding(
$JisText[$i]->text,
"SJIS",
"JIS"
);
}
}
# ASCII
else {
$Ret .= $val . " ";
}
}
return $Ret;
}
# **********************************************************
# 画面の編集
# **********************************************************
function EditDataHead( ) {
}
# **********************************************************
# エラーチェック
# **********************************************************
function CheckDataHead( ) {
global $ErrMessage;
global $Mail;
global $MessageCount;
$MessageCount = imap_num_msg( $Mail );
if ( $MessageCount == 0 ) {
$ErrMessage = "メールボックスは空です";
}
if ( $_POST['send'] != '' ) {
# チェック( 複数チェック可 )
imap_delete( $Mail, (int)$_POST['send'], FT_UID );
# 削除( 閉じる前にチェックしたメールを全て削除 )
imap_expunge( $Mail );
$MessageCount = imap_num_msg( $Mail );
}
}
?>
| |
|
|
|