Autor Zpráva
Jami
Profil *
Ahoj,
s pomocí intervalu jsem si dal dohromady odeslání emailu s přílohou. Trochu jsem poupravil podmínky a kontroly a zdá se, že vše funguje tak jak má. Ale jiný problém je, že potřebuji přidat do formuláře další boxy (jméno, příjmení atd.) na což nemůžu absolutně přijít.

Tady je kód mého formuláře a php scriptu:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<? if(empty($_POST['akce'])):?>
<form action="send.php" method="post" enctype="multipart/form-data">
Odesílatel: <input type="text" name="odesilatel" value="" size="50" maxlenght="50" />
Příjemce: <input type="text" name="prijemce" value="" size="50" maxlenght="50" />
Předmět: <input type="text" name="predmet" value="" size="50" maxlenght="50" />
Příjmení: <input type="text" name="prijmeni" size="20" />
Text: <textarea name="dopis" cols="50" rows="10"></textarea>
Soubor: <input type="file" name="soubor" />
<input type="submit" name="akce" value="Odeslat" />
</form>
<? endif;

if(!empty($_POST['akce'])):
include "mime_mail.inc";
// nactení trídy mime_mail

$newFile="upload/".$_FILES['soubor']['name'];
// cesta k souboru
move_uploaded_file($_FILES['soubor']['tmp_name'], "$newFile");
// nahraný soubor zkopírujeme z docasného adresáre
if(File_Exists($newFile)):
// kontrola, zda existuje soubor
$fd=FOpen($newFile, "r");
// otevrení souboru pro ctení
$data=FRead($fd, FileSize($newFile));
// binární ctení dat
FClose($fd);
// zavrení souboru

$mail=new mime_mail;
// vytvorení instance objektu

$mail->from = $_POST['odesilatel'];
// nastavení údaju
$mail->to = "email@blogland.cz";
$mail->subject = $_POST['predmet'];
$mail->body = $_POST['prijmeni'];
$mail->body = $_POST['dopis'];
$mail->add_attachment($data, $_FILES['soubor']['name'], $_FILES['soubor']['type']);

if($mail->body!=""):

$mail->send();

echo "<p>Formulář byl odeslán.</p>";


else:
echo "Chyba";
// pokud soubor neexistuje
endif;
endif;
if($newFile=="1"):
unlink("$newFile");
else:
echo "";
endif;
// smazani docasného souboru
echo "<a href='javascript:history.back(1);'>Back</a>";
endif;
?>

</body>
</html>


A tady MIME MAIL

<?

// ulozit jako "mime_mail.inc"

class mime_mail
{
var $parts;
var $to;
var $from;
var $headers;
var $subject;
var $body;

/*
* void mime_mail()
* konstruktor trídy
*/

function mime_mail() {
$this->parts = array();
$this->to = "";
$this->from = "";
$this->subject = "";
$this->body = "";
$this->headers = "";
}

/*
* void add_attachment(string message, [string name], [string ctype])
* vlozí prílohu do objektu zprávy
*/

function add_attachment($message, $name = "", $ctype = "application/octet-stream") {
$this->parts[] = array (
"ctype" => $ctype,
"message" => $message,
"encode" => $encode,
"name" => $name
);
}

/*
* void build_message(array part=
* vytvorení cásti vícedílné zprávy
*/

function build_message($part) {
$message = $part[ "message"];
$message = chunk_split(base64_encode($message));
$encoding = "base64";
return "Content-Type: ".$part[ "ctype"].
($part[ "name"]? "; name = \"".$part[ "name"].
"\"" : "").

"\nContent-Transfer-Encoding: $encoding\n\n$message\n";
}

/*
* void build_multipart()
* vytvárí vícedílnou zprávu
*/

function build_multipart() {
$boundary = "b".md5(uniqid(time()));
$multipart =
"Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary";

for($i = sizeof($this->parts)-1; $i >= 0; $i--)
{
$multipart .= "\n".$this->build_message($this->parts[$i]).
"--$boundary";
}
return $multipart.= "--\n";
}

/*
* string get_mail()
* vrací vytvorenou zprávu
*/

function get_mail($complete = true) {
$mime = "";
if (!empty($this->from))
$mime .= "From: ".$this->from. "\n";
if (!empty($this->headers))
$mime .= $this->headers. "\n";

if ($complete) {
if (!empty($this->to)) {
$mime .= "To: $this->to\n";
}
if (!empty($this->subject)) {
$mime .= "Subject: $this->subject\n";
}
}

if (!empty($this->body))
$this->add_attachment($this->body, "", "text/plain; charset=utf-8");
$mime .= "MIME-Version: 1.0\n".$this->build_multipart();

return $mime;
}

/*
* void send()
* odesílá zprávu(poslední funkce trídy, kterou je potreba zavolat)
*/

function send() {
$mime = $this->get_mail(false);
mail($this->to, $this->subject, "", $mime);
}
}; // konec trídy

?>

Najde se prosím někdo, kdo by byl ochotný poradit?
AM_
Profil
$mail->body = $_POST['prijmeni'];
$mail->body = $_POST['dopis'];

Tady se ti jedna hodnota přepisuje druhou, mělo by to být spíš
$mail->body .= $_POST['prijmeni']."\n"; 
$mail->body .= $_POST['dopis']."\n";
Jami
Profil *
Jo super už to jde. Díky moc

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: