<?
require_once('include/global.php');
require_once('include/mail_lib.php');
require_once('include/file.php');
require_once('conf.inc.php');


// check
	if (!$_GET['mb_id'] || !$_GET['mf_no'] || !$_GET['mf_an_struct'])
		msg('올바른 URL로 접근하여 주십시오');


	// [2008-04-03] 파일 다운로드 시간 제한
		if (isset($G_SYS['DOWNLOAD_TIME_LIMIT']))
			set_time_limit($G_SYS['DOWNLOAD_TIME_LIMIT']);


// data
	$DEBUG['db_select']['start'] = getmicrotime();

	// set data
		$mail_file_table = $AUTH[auth_m_mf_table];

	// db - select
		$sql = "
			SELECT
				mf_filename, mf_attach_names
			FROM
				$mail_file_table
			WHERE
				mf_no='" . $_GET['mf_no'] . "'
				AND m_no='" . $AUTH['auth_m_no'] . "'
				AND mb_id='". $_GET['mb_id']. "'
			";
		$row = db_get_row($sql);

		// [2009-07-01]
		if (!$row)
			msg("존재하지 않는 메일입니다.\\n\\n이미 삭제되었거나 다른 편지함으로 옮겨졌을 수 있습니다.");

	$DEBUG['db_select']['exec'] += getmicrotime() - $DEBUG['db_select']['start'];


// download
	$DEBUG['attach_save']['start'] = getmicrotime();

	$mail_file = get_mail_dir().'/'.get_mb_dir($_GET['mb_id']).'/'.$row['mf_filename'];
	// [2013-04-30] POP3 등으로 메일파일이 먼저 삭제된 경우, 에러를 정확하게 보여줌.
	//if (!file_exists($mail_file) || !is_readable($mail_file))
	if (!file_exists($mail_file))
	{
		$sql = "
			DELETE
			FROM
				".$AUTH[auth_m_mf_table]."
			WHERE
				mf_no='" . $_GET['mf_no'] . "'
				AND m_no='" . $AUTH['auth_m_no'] . "'
				AND mb_id='". $_GET['mb_id']. "'
			";
		db_query($sql);
		msg("존재하지 않는 메일입니다.\\n\\n아웃룩등의 메일클라이언트에서 POP3 서비스를 통해 메일을 가져갈때\\n\\n[서버에 메시지 복사본 저장]옵션을 체크하지 않아 삭제되었을 가능성이 높습니다.");
	}	// if()

	// db disconnect
		unset_db();

	if (!is_readable($mail_file))
		error("메일 파일이 존재하지 않거나 퍼미션이 잘못되었습니다.\n=> ". $mail_file, 'FILE');

	// [2008-02-26] 파일명이 길어 다운로드가 되지 않는 오류 수정. (파일명을 전달받지 않고 디비에서 바로 가져오기)
	$an = attach_names_toarray($row['mf_attach_names']);
	$as = array_search($_GET['mf_an_struct'], $an['struct']);
	if ($as === false)
		error("메일 파일에서 첨부파일(".$_GET['mf_an_struct'].")을 추출할 수 없습니다.\n=> ". $mail_file, 'FILE');

	$contents = get_mailparse_attachment($mail_file, $_GET['mf_an_struct']);
	file_down_headeronly($contents, $an['name'][$as]);

	$DEBUG['attach_save']['exec'] += getmicrotime() - $DEBUG['attach_save']['start'];		


// 다운로드를 위해 디버깅정보 생략.
#require_once('include/global_end.php');
?>