Autor | Zpráva | ||
---|---|---|---|
Jami Profil * |
#1 · Zasláno: 25. 5. 2009, 23:53:00
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 |
#2 · Zasláno: 26. 5. 2009, 14:15:03 · Upravil/a: AM_
„$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 * |
#3 · Zasláno: 26. 5. 2009, 16:45:36
Jo super už to jde. Díky moc
|
||
Časová prodleva: 15 let
|
0