Autor | Zpráva | ||
---|---|---|---|
gabael Profil |
#1 · Zasláno: 22. 1. 2012, 13:35:21
Zdravím vospolok,
potrebujem pomôcť s kontaktným formulárom, ktorý dokáže odoslať email s prílohou. Google mi dokázal trošku pomôcť, a našiel som niečo takéto: <?php if ($_SERVER['REQUEST_METHOD']=="POST"){ // we'll begin by assigning the To address and message subject $to="gabor.jenei@gmail.com"; $subject="Mába e-mail"; // get the sender's name and email address // we'll just plug them a variable to be used later $from = stripslashes($_POST['fromname'])."<".stripslashes($_POST['fromemail']).">"; // generate a random string to be used as the boundary marker $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x"; // now we'll build the message headers $headers = "From: $from\r\n" . "MIME-Version: 1.0\r\n" . "Content-Type: multipart/mixed;\r\n" . " boundary=\"{$mime_boundary}\""; // here, we'll start the message body. // this is the text that will be displayed // in the e-mail $message="Mába üzenet"; // next, we'll build the invisible portion of the message body // note that we insert two dashes in front of the MIME boundary // when we use it $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"utf-8\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n"; // now we'll process our uploaded files foreach($_FILES as $userfile){ // store the file information to variables for easier access $tmp_name = $userfile['tmp_name']; $type = $userfile['type']; $name = $userfile['name']; $size = $userfile['size']; // if the upload succeded, the file will exist if (file_exists($tmp_name)){ // check to make sure that it is an uploaded file and not a system file if(is_uploaded_file($tmp_name)){ // open the file for a binary read $file = fopen($tmp_name,'rb'); // read the file content into a variable $data = fread($file,filesize($tmp_name)); // close the file fclose($file); // now we encode it and split it into acceptable length lines $data = chunk_split(base64_encode($data)); } // now we'll insert a boundary to indicate we're starting the attachment // we have to specify the content type, file name, and disposition as // an attachment, then add the file content. // NOTE: we don't set another boundary to indicate that the end of the // file has been reached here. we only want one boundary between each file // we'll add the final one after the loop finishes. $message .= "--{$mime_boundary}\n" . "Content-Type: {$type};\n" . " name=\"{$name}\"\n" . "Content-Disposition: attachment;\n" . " filename=\"{$fileatt_name}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n"; } } // here's our closing mime boundary that indicates the last of the message $message.="--{$mime_boundary}--\n"; // now we just send the message if (@mail($to, $subject, $message, $headers, $phone)) echo "<p align='center'><strong>Üzenet elküldve!</strong></p><br> <p align='center'><strong>Köszönjük!</strong></p>"; else echo "<p align='center'><strong>Nem sikerült elküldeni</strong></p>"; } else { ?> </p> <p class="p-BOLD">Email küldése:</p> <p>Kérjük, azt az elérhetőségét adja meg, ahova a választ kéri!</p><hr> <form action="<?php echo $_SERVER['../PHP_SELF']; ?>" method="post" enctype="multipart/form-data" name="form1"> <table width="650" border="0" align="center" cellpadding="5" cellspacing="5"> <tr> <td align="right" valign="middle"><p>Az Ön neve:</p></td> <td align="left" valign="middle"><p> <input name="fromname" type="text" class="inputfield" size="40"> </p></td> </tr> <tr> <td align="right" valign="middle"><p>Az Ön email címe:</p></td> <td align="left" valign="middle"><p> <input name="fromemail" type="text" class="inputfield" size="40"> </p></td> </tr> <tr> <td align="right" valign="middle"><p>Az Ön telefonszáma:</p></td> <td align="left" valign="middle"><p> <input name="fromphone" type="text" class="inputfield" id="fromphone" size="40"> </p></td> </tr> <tr> <td align="right" valign="middle"><p>Üzenet:</p></td> <td align="left" valign="middle"><p> <textarea name="frommessage" class="message" id="frommessage"></textarea> </p></td> </tr> <tr> <td align="right" valign="middle"><p>File 1:</p></td> <td align="left" valign="middle"><p> <input name="file1" type="file" class="inputfield" size="40"> </p></td> </tr> <tr> <td align="right" valign="middle"><p>File 2:</p></td> <td align="left" valign="middle"><p> <input name="file2" type="file" class="inputfield" size="40"> </p></td> </tr> <tr> <td colspan="2" align="center" valign="middle"><p> <input type="submit" name="Submit" value="Üzenet küldése"> </p></td> </tr> </table> </form> <?php } ?> tento formulár som už "osadil" na web : www.cisteriesenie.sk/Maba/contact/contact.php Je to celkom OK, až na to, že si neviem poradiť s doplnením dvoch ďalších inputov ( telefon a správa). Ďalej: - po vyplnení formulára (meno a mailova adresa) mi príde do poštoveho klienta mail s prílohou, čo je fasa, ale odosielateľa mi ukazuje veľmi čudne: Gábor Jénei<gabor.jenei@forex.eu.sk> [=?ISO-8859-1?Q?G=E1bor_J=E9nei<gabor.jenei@forex.eu.sk>?=] A v poslednom rade, by som rád do tohto kódu vložil to, že email a meno sú povinné polia. Vopred ďakujem za každú pomoc. |
||
SwimX Profil |
gabael:
„A v poslednom rade, by som rád do tohto kódu vložil to, že email a meno sú povinné polia.“ za if ($_SERVER['REQUEST_METHOD']=="POST"){ if ( empty ( $_POST ['nazevpovinehoprvku'] ) ) echo "toto je povine pole"; else { zbytek kodu } doplnění prvků: dole v html stačí zkopírovat řádky tabulky a přejmenovat inputy v php kodu potom zde radek 24 $message="Mába üzenet"; $message .="Telefon: " . $_POST [ 'telefon' ] . "\r\n"; a co set týče kódování předmětu a zprávy, tak se koukni do FAQU zdejšího, je to tam krásně popsáno. |
||
gabael Profil |
#3 · Zasláno: 22. 1. 2012, 17:17:06
SwimX:
Úvodom ďakujem za pomoc. V PHP nie som veľmi dobrý. Zmenil som kód na niečo takéto avšak formulár sa už vôbec na webe ani nezobrazí. Aby si to možno kus lepšie pochopil a zároveň mi pomohol urobil som aj slovenskú verziu tohto formulára: http://www.cisteriesenie.sk/Maba/SK-SITE/kontakt.php Nechápem to, prečo to nefunguje. Tento typ formulára ma potešil z dôvodu, že nepotrebuje vytvárať v roote priečinok s oprávneniami, kde nahráva odosielané súbory. Za pomoc, vopred ďakujem. <?php $meno = $_POST['fromname']; $email = $_POST['fromemail']; $telefon = $_POST['fromphone']; $sprava = $_POST['frommessage']; $d = date('l dS \of F Y h:i:s A'); if ($_SERVER['REQUEST_METHOD']=="POST"){ if ( empty ($meno) || empty($email)) { echo '<p align="center"><strong>Prepáčte, ale všetky polia označené * sú povinné pre vyplnenie.</strong></p>'; } else { (@mail($to, $subject, $message, $headers, $phone)); print '<p><center>Ďakujeme '.$meno.' za Váš záujem.<br>Naši pracovníci Vás budú kontaktovať v dohľadnej dobe.</center></p>'; } // we'll begin by assigning the To address and message subject $to="gabor.jenei@gmail.com"; $subject="Mába e-mail"; // get the sender's name and email address // we'll just plug them a variable to be used later $from = stripslashes($_POST['fromname'])."<".stripslashes($_POST['fromemail']).">"; // generate a random string to be used as the boundary marker $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x"; // now we'll build the message headers $headers = "From: $from\r\n" . "MIME-Version: 1.0\r\n" . "Content-Type: multipart/mixed;\r\n" . " boundary=\"{$mime_boundary}\""; // here, we'll start the message body. // this is the text that will be displayed // in the e-mail $message .= 'Meno a Priezvisko: '.$meno."\n"; $message .= 'Email: '.$email."\n"; $message .= 'Telefon: '.$telefon."\n"; $message .= 'Správa: '.$sprava."\n"; $message .= 'Dátum a čas: '.$d; // next, we'll build the invisible portion of the message body // note that we insert two dashes in front of the MIME boundary // when we use it $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"utf-8\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n"; // now we'll process our uploaded files foreach($_FILES as $userfile){ // store the file information to variables for easier access $tmp_name = $userfile['tmp_name']; $type = $userfile['type']; $name = $userfile['name']; $size = $userfile['size']; // if the upload succeded, the file will exist if (file_exists($tmp_name)){ // check to make sure that it is an uploaded file and not a system file if(is_uploaded_file($tmp_name)){ // open the file for a binary read $file = fopen($tmp_name,'rb'); // read the file content into a variable $data = fread($file,filesize($tmp_name)); // close the file fclose($file); // now we encode it and split it into acceptable length lines $data = chunk_split(base64_encode($data)); } // now we'll insert a boundary to indicate we're starting the attachment // we have to specify the content type, file name, and disposition as // an attachment, then add the file content. // NOTE: we don't set another boundary to indicate that the end of the // file has been reached here. we only want one boundary between each file // we'll add the final one after the loop finishes. $message .= "--{$mime_boundary}\n" . "Content-Type: {$type};\n" . " name=\"{$name}\"\n" . "Content-Disposition: attachment;\n" . " filename=\"{$fileatt_name}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n"; } } // here's our closing mime boundary that indicates the last of the message $message.="--{$mime_boundary}--\n"; // now we just send the message ?> </p> <p class="p-BOLD">Kontaktný formulár:</p> <p>Využite náš kontaktný formulár. Napíšte nám Vaše požiadavky, prípadne priložte Vaše fotky o predstave.<br /> (polia označené <span class="bold-red-big">*</span> sú povinné pre vyplnenie) </p> <hr> <form action="<?php echo $_SERVER['../PHP_SELF']; ?>" method="post" enctype="multipart/form-data" name="form1"> <table width="650" border="0" align="center" cellpadding="5" cellspacing="5"> <tr> <td align="right" valign="middle"><p>meno a priezvisko:</p></td> <td align="left" valign="middle"><p> <input name="fromname" type="text" class="inputfield" size="40"> <span class="bold-red-big">*</span></p></td> </tr> <tr> <td align="right" valign="middle"><p>e-mail:</p></td> <td align="left" valign="middle"><p> <input name="fromemail" type="text" class="inputfield" size="40"> <span class="bold-red-big">*</span></p></td> </tr> <tr> <td align="right" valign="middle"><p>telefón:</p></td> <td align="left" valign="middle"><p> <input name="fromphone" type="text" class="inputfield" id="fromphone" size="40"> </p></td> </tr> <tr> <td align="right" valign="middle"><p>správa:</p></td> <td align="left" valign="middle"><p> <textarea name="frommessage" class="message" id="frommessage"></textarea> </p></td> </tr> <tr> <td align="right" valign="middle"><p>Súbor 1:</p></td> <td align="left" valign="middle"><p> <input name="file1" type="file" class="inputfield" size="40"> </p></td> </tr> <tr> <td align="right" valign="middle"><p>Súbor 2:</p></td> <td align="left" valign="middle"><p> <input name="file2" type="file" class="inputfield" size="40"> </p></td> </tr> <tr> <td colspan="2" align="center" valign="middle"><p> <input type="submit" name="Submit" value="Odoslať"> </p></td> </tr> </table> </form> <?php } ?> |
||
panther Profil |
#4 · Zasláno: 22. 1. 2012, 18:28:45
gabael:
na ř. 19 odesíláš (pokousíš se odeslat) e-mail, ale dané proměnné neexistují, vytváříš je až někde níž. Na ř. 43 budeš mít nedefinovanou proměnnou (varování), tam ta tečka před rovnítko nepatří (na dalších řádcích, v momentě, kdy proměnná existuje, už je tam tečka správně). |
||
gabael Profil |
Ďakujem, takto to funguje perfektne !
Akurát by som poteboval aby meno a email boli povinné polia. <?php $meno = $_POST['fromname']; $email = $_POST['fromemail']; $telefon = $_POST['fromphone']; $sprava = $_POST['frommessage']; $d = date('l dS \of F Y h:i:s A'); if ($_SERVER['REQUEST_METHOD']=="POST"){ // we'll begin by assigning the To address and message subject $to="gabor.jenei@gmail.com"; $subject="Mába e-mail"; // get the sender's name and email address // we'll just plug them a variable to be used later $from = stripslashes($_POST['fromname'])."<".stripslashes($_POST['fromemail']).">"; // generate a random string to be used as the boundary marker $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x"; // now we'll build the message headers $headers = "From: $from\r\n" . "MIME-Version: 1.0\r\n" . "Content-Type: multipart/mixed;\r\n" . " boundary=\"{$mime_boundary}\""; // here, we'll start the message body. // this is the text that will be displayed // in the e-mail $message .= 'Meno a Priezvisko: '.$meno."\n"; $message .= 'Email: '.$email."\n"; $message .= 'Telefon: '.$telefon."\n"; $message .= 'Správa: '.$sprava."\n"; $message .= 'Dátum a čas '.$d; // next, we'll build the invisible portion of the message body // note that we insert two dashes in front of the MIME boundary // when we use it $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"utf-8\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n"; // now we'll process our uploaded files foreach($_FILES as $userfile){ // store the file information to variables for easier access $tmp_name = $userfile['tmp_name']; $type = $userfile['type']; $name = $userfile['name']; $size = $userfile['size']; // if the upload succeded, the file will exist if (file_exists($tmp_name)){ // check to make sure that it is an uploaded file and not a system file if(is_uploaded_file($tmp_name)){ // open the file for a binary read $file = fopen($tmp_name,'rb'); // read the file content into a variable $data = fread($file,filesize($tmp_name)); // close the file fclose($file); // now we encode it and split it into acceptable length lines $data = chunk_split(base64_encode($data)); } // now we'll insert a boundary to indicate we're starting the attachment // we have to specify the content type, file name, and disposition as // an attachment, then add the file content. // NOTE: we don't set another boundary to indicate that the end of the // file has been reached here. we only want one boundary between each file // we'll add the final one after the loop finishes. $message .= "--{$mime_boundary}\n" . "Content-Type: {$type};\n" . " name=\"{$name}\"\n" . "Content-Disposition: attachment;\n" . " filename=\"{$fileatt_name}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n"; } } // here's our closing mime boundary that indicates the last of the message $message.="--{$mime_boundary}--\n"; // now we just send the message if (@mail($to, $subject, $message, $headers)) echo "<p align='center'><strong>Správa úspešne odoslaná!</strong></p><br> <p align='center'><strong>Ďakujeme!</strong></p>"; else echo "<p align='center'><strong>Správu nebolo možné odoslať!</strong></p>"; } else { ?> |
||
Časová prodleva: 12 let
|
0