Емайл форма с n-та прикачени файлове.

jooorooo

Registered
Код:
<?

$action = $_REQUEST['action'];
global $action;

function showForm() {
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body body onload="init()">
<?php
/* Настройки за получателя */
$toname="name_user"; //Име на получателя
$tomail="name_user@email.com"; //Емаил на получателя
/* Настройки за получателя */
?>
<form enctype="multipart/form-data" name="send" method="post" action="<?=$_SERVER['PHP_SELF']?>">
<input type="hidden" name="action" value="send" />
<input type="hidden" name="to_name" size="50" value="<?php echo $toname; ?>">
<input type="hidden" name="to_email" size="50" value="<?php echo $tomail; ?>">
<table class="ttop2" border="3" cellspacing="1" cellpadding="2" style="background-color: rgb(204, 204, 204);" id="emailTable">
<tbody id="emailTBody">
<tr>
<td class="gradient" style="text-align: right;">
Вашето име:
</td>
<td class="gradient" style="text-align: left;">
<input name="from_name" size="25">
</td>
<td class="gradient" style="text-align: right;">
Вашия Емаил:
</td>
<td class="gradient" style="text-align: left;">
<input name="from_email" size="25">
</td>
</tr>
<tr>
<td class="gradient" style="text-align: right;">
Заглавие:
</td>
<td class="gradient" colspan="3" style="text-align: left;">
<input name="subject" size="55">
<input type="button" name="add_attachment" value="Закачи файл" onclick="addAttachment()">
</td>
</tr>
<tr>
<td class="nogradient" colspan="4" style="text-align: left;">
<textarea name="body" rows="10" cols="70"></textarea>
</td>
</tr>
<tr>
<td class="gradient" height="65" colspan="4" style="text-align: left;">
<div style="position: relative; bottom: -6px; left: 6px;">
<input type="submit" value="Изпрати">
</div>
</td>
</tr>
</tbody>
</table>
</form>

<script type="text/javascript" language="javascript">
var trow;

function init()
{
trow = 2;
}

function addAttachment()
{
var tbodyElem = document.getElementById("emailTBody");
var trElem, tdElem, txtNode, tmpString;

trElem = tbodyElem.insertRow(trow);

tdElem = trElem.insertCell(0);
tdElem.className = "gradient";
tdElem.setAttribute("style", "text-align: right;");
txtNode = document.createTextNode("Закачи файл " + (trow - 1) + ":");
tdElem.appendChild(txtNode);


tdElem = trElem.insertCell(1);
tdElem.className = "gradient";
tdElem.setAttribute("style", "text-align: left;");
tdElem.setAttribute("colspan", "3");

var input = document.createElement("INPUT");
input.setAttribute("type", "file");
input.setAttribute("name", "attachment" + (trow - 1));
input.setAttribute("size", "60");
input.setAttribute("value", "");
input.setAttribute("id", "attachment" + (trow - 1));
tdElem.appendChild(input);

trow++;
}
</script>
<?php
}
function sendMail() {
if ((trim($_POST['from_name']))=="") { //Ако не е попълнено име!
die ("<p>Не сте попълнили вашето име, моля батиснете бутона Back и го попълнете</p>");
}
if ((trim($_POST['from_email']))=="") { //ако не е попълнен емаил!
die ("<p>Не сте попълнили вашия емайл адрес, моля батиснете бутона Back и го попълнете</p>");
}
else {
$to_name = stripslashes($_POST['to_name']);
$from_name = stripslashes($_POST['from_name']);
$subject = stripslashes($_POST['subject']);
$body = stripslashes($_POST['body']);
$to_email = $_POST['to_email'];


$headers = "From: $from_name <" . $_POST['from_email'] . ">\n";
$headers .= "Reply-To: <" . $_POST['from_email'] . ">\n"; 
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/related; type=\"multipart/alternative\"; boundary=\"----=MIME_BOUNDRY_main_message\"\n"; 
$headers .= "X-Sender: $from_name <" . $_POST['from_email'] . ">\n";
$headers .= "X-Mailer: PHP4\n";


$headers .= "X-Priority: 3\n"; 
$headers .= "Return-Path: <" . $_POST['from_email'] . ">\n"; 
$headers .= "This is a multi-part message in MIME format.\n";
$headers .= "------=MIME_BOUNDRY_main_message \n"; 
$headers .= "Content-Type: multipart/alternative; boundary=\"----=MIME_BOUNDRY_message_parts\"\n"; 
$message = "------=MIME_BOUNDRY_message_parts\n";
$message .= "Content-Type: text/plain; charset=\"windows-1251\"\n"; 
$message .= "Content-Transfer-Encoding: quoted-printable\n"; 
$message .= "\n"; 
$message .= "$body\n";
$message .= "\n"; 
$message .= "------=MIME_BOUNDRY_message_parts--\n"; 
$message .= "\n"; 

foreach($_FILES as $file => $value) {
$_tmpname = $_FILES[$file]['tmp_name'];
$_filename = $_FILES[$file]['name'];
if (is_uploaded_file($_tmpname)) { 
$fp = fopen($_tmpname, "rb"); 
$data = fread($fp, filesize($_tmpname)); 
$data = chunk_split(base64_encode($data)); 
$message .= "------=MIME_BOUNDRY_main_message\n"; 
$message .= "Content-Type: application/octet-stream;\n\tname=\"" . $_filename . "\"\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "Content-Disposition: attachment;\n\tfilename=\"" . $_filename . "\"\n\n";
$message .= $data; 
$message .= "\n\n";
fclose($fp);
}
}

$message .= "------=MIME_BOUNDRY_main_message--\n"; 


$ok = mail("$to_name<$to_email>", $subject, $message, $headers); 
if($ok)
{
echo "Благодарим ви. Писмото беше изпратено.";
}
else
{
echo "Елайлът не може да буде изпратен";
}
}
}

print <<< EOT
<?xml version="1.0" encoding="windows-1251"?>

EOT;
?>
<?
switch ($action) {
case "send":
sendMail();
showForm();
break;
default:
showForm();
}
?>
 

Горе