添付ファイルの表示およびダウンロード

表示するphpファイル
写真が2枚の時は、vertical-align:topで上揃えにします。

<style>
#menu {
	border: solid 1px #f0f8ff;
	font-size:small;
	color:#d3d3d3;
	padding-left:10px;
}
#img{
	position: relative;
}
#img img{
	vertical-align:top;
}
</style>
<?php
$id = 15;

$dsn = "mysql:dbname=mail;host=localhost";
$user = "hoge";
$password = "hogehoge";
try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e){
    print('connection failed:'.$e->getMessage());
}
$sql = "select * from sends where id = '".$id."'";
$stmt = $dbh->query($sql);

$result = $stmt->fetch(PDO::FETCH_ASSOC);
$send_from = $result['username'];
$send_sub = $result['subject'];
$send_body = $result['body'];
$sendtime = $result['sendtime'];
$file1 = $result['file1'];
$file2 = $result['file2']; 

echo "<h3>".$send_sub."</h3>";
echo "From: ".$send_from. "<br>";
echo $sendtime. "<hr>";
echo $send_body. "<br>";
if(!empty($file2)){
	echo "<br><div id=\"img\"><img src=\"".$file1."\"> <img src=\"".$file2."\"></div><br>";
	echo "<a href=\"wa.php?id=".$file1."\">1.ダウンロード</a> <a href=\"wa.php?id=".$file2."\">2.ダウンロード</a><br>";
}elseif(!empty($file1)){
	echo "<br><img src=\"".$file1."\"><br>";
	echo "<a href=\"wa.php?id=".$file1."\">ダウンロード</a><br>";
}
?>
<br>
<div id="menu"> <a href="?compose=reply&inbox=<?php echo $id; ?>">返信する</a> | <a href="?path=todelete&inbox=<?php echo $id; ?>">削除</a> | <a href="?path=tojunk&inbox=<?php echo $id; ?>">ジャンク</a></div>

ダウンロード押下すると、wa.phpで生成した画像ファイルをダウンロードします。
拡張子に応じて、switch文で切り替えます。
wa.php (web access ※outlookの真似をしました)

<?php 

$fpath = $_GET&#91;'id'&#93;;
$ext = substr($fpath, strrpos($fpath, '.') + 1);

$date = date(Ymdhis);

switch ($ext) {
	case 'jpeg':
		$fname = "".$date.".jpeg";
		header('Content-Type: application/force-download');
		header('Content-Length: '.filesize($fpath));
		header('Content-disposition: attachment; filename="'.$fname.'"');
		readfile($fpath);
		break;
	case 'gif':
		$fname = "".$date.".gif";
		header('Content-Type: application/force-download');
		header('Content-Length: '.filesize($fpath));
		header('Content-disposition: attachment; filename="'.$fname.'"');
		readfile($fpath);
		break;
	case 'png':
		$fname = "".$date.".png";
		header('Content-Type: application/force-download');
		header('Content-Length: '.filesize($fpath));
		header('Content-disposition: attachment; filename="'.$fname.'"');
		readfile($fpath);
		break;
	default:
		$fname = "".$date.".jpg";
		header('Content-Type: application/force-download');
		header('Content-Length: '.filesize($fpath));
		header('Content-disposition: attachment; filename="'.$fname.'"');
		readfile($fpath);
		break;
}
?>

まーいいんじゃないでしょうか。

添付が1枚の時

つなげると、

OK! Good!

さて、idはauto incrementではなく、乱英数字8桁くらいにしたいですね。

$str = array_merge(range('a','z'), range('0', '9'), range('A', 'Z'));
$r_str = null;
for($i = 0; $i < 8; $i++){
	$r_str .= $str[rand(0, count($str) - 1)];
}
echo $r_str;

ほい