Я пытаюсь добавить новое поле в поле формы контакта, но я не понимаю, как правильно это сделать. Мне просто нужно, чтобы загруженный файл был отправлен в виде вложения в адрес электронной почты для связи с нами. Заранее спасибо Рахул
Вот мой PHP-код:
<?php $submitted = FALSE; if ($_POST['contact_form']) { $submitted = TRUE; // The form has been submitted and everything is ok so far… $name = htmlspecialchars($_POST['name'], ENT_QUOTES); $email = htmlspecialchars($_POST['email'], ENT_QUOTES); $country = htmlspecialchars($_POST['country'], ENT_QUOTES); $message = htmlspecialchars($_POST['message'], ENT_QUOTES); if ($name == "") { // if the name is blank… give error notice. echo "<p>Please enter your name.</p>"; $submitted = FALSE; // Set this to FALSE so that it the message is not sent. } if ($email == "") { // if the email is blank… give error notice. echo "<p>Please enter your e-mail address so that we can reply to you.</p>"; $submitted = FALSE; // Set this to FALSE so that it the message is not sent. } if ($country == "") { // if the country is blank… give error notice. echo "<p>Please enter your country.</p>"; $submitted = FALSE; // Set this to FALSE so that it the message is not sent. } if ($message == "") { // if the message is blank… give error notice. echo "<p>Please enter a question.</p>"; $submitted = FALSE; // Set this to FALSE so that it the message is not sent. } if ($_POST['email'] != "" && (!strstr($_POST['email'],"@") || !strstr($_POST['email'],"."))) { // if the string does not contain "@" OR the string does not contain "." then… // supply a different error notice. echo "<p>Please enter a valid e-mail address.</p>"; $submitted = FALSE; // Set this to FALSE so that it the message is not sent. } $problemIn = ''; $ip = $_SERVER['REMOTE_ADDR']; $url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; $to = "rahul@test.com"; // Set the target email address. $header = "From: $email"; $attention = "Someone has sent you question from your webpage!"; $message = "Name: $name \n Country: $country \n Question: $message \n IP Address: $ip \n Link: $url \n"; if ($submitted == TRUE) { mail($to, $attention, $message, $header); echo '<script type="text/javascript">alert("Thank you. Your question has been sent.");</script>'; } } ?>
Вот мой код HTML:
<form method="post" name="frmmail" id="frmmail" action="<?php echo $_SERVER['SCRIPT_NAME'] ?>" onSubmit="javascript: return validation();" eenctype="multipart/form-data"> <input name="name" id="txtname" value="" placeholder="Name" onfocus="if(this.value == 'Name')" class="usericon" /> <input name="email" id="txtmail" value="" placeholder="Email" onfocus="if(this.value == 'Email')" class="emailicon" /> <input name="country" id="txtcountry" value="" placeholder="Country" onfocus="if(this.value == 'Country')" style="margin:0" class="countryicon" /> <textarea name="message" id="txtmsg" placeholder="Your Comment/Question" onfocus="if(this.value == 'Your Question')" class="msgicon"></textarea> <input type="file" name="file" class="file" /> <input type="submit" value="Submit" class="button" /> <input type="hidden" name="contact_form" value="submitted" /> </form>
Вот HTML-форма
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Email Attachment Without Upload - Excellent Web World</title> <style> body{ font-family:Arial, Helvetica, sans-serif; font-size:13px;} th{ background:#999999; text-align:right; vertical-align:top;} input{ width:181px;} </style> </head> <body> <form action="emailSend.php" method="post" name="mainform" enctype="multipart/form-data"> <table width="500" border="0" cellpadding="5" cellspacing="5"> <tr> <th>Your Name</th> <td><input name="fieldFormName" type="text"></td> </tr> <tr> <tr> <th>Your Email</th> <td><input name="fieldFormEmail" type="text"></td> </tr> <tr> <th>To Email</th> <td><input name="toEmail" type="text"></td> </tr> <tr> <th>Subject</th> <td><input name="fieldSubject" type="text" id="fieldSubject"></td> </tr> <tr> <th>Comments</th> <td><textarea name="fieldDescription" cols="20" rows="4" id="fieldDescription"></textarea></td> </tr> <tr> <th>Attach Your File</th> <td><input name="attachment" type="file"></td> </tr> <tr> <td colspan="2" style="text-align:center;"><input type="submit" name="Submit" value="Send"><input type="reset" name="Reset" value="Reset"></td> </tr> </table> </form>
PHP-код
<?php $to = $_POST['toEmail']; $fromEmail = $_POST['fieldFormEmail']; $fromName = $_POST['fieldFormName']; $subject = $_POST['fieldSubject']; $message = $_POST['fieldDescription']; /* GET File Variables */ $tmpName = $_FILES['attachment']['tmp_name']; $fileType = $_FILES['attachment']['type']; $fileName = $_FILES['attachment']['name']; /* Start of headers */ $headers = "From: $fromName"; if (file($tmpName)) { /* Reading file ('rb' = read binary) */ $file = fopen($tmpName,'rb'); $data = fread($file,filesize($tmpName)); fclose($file); /* a boundary string */ $randomVal = md5(time()); $mimeBoundary = "==Multipart_Boundary_x{$randomVal}x"; /* Header for File Attachment */ $headers .= "\nMIME-Version: 1.0\n"; $headers .= "Content-Type: multipart/mixed;\n" ; $headers .= " boundary=\"{$mimeBoundary}\""; /* Multipart Boundary above message */ $message = "This is a multi-part message in MIME format.\n\n" . "--{$mimeBoundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n"; /* Encoding file data */ $data = chunk_split(base64_encode($data)); /* Adding attchment-file to message*/ $message .= "--{$mimeBoundary}\n" . "Content-Type: {$fileType};\n" . " name=\"{$fileName}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n" . "--{$mimeBoundary}--\n"; } $flgchk = mail ("$to", "$subject", "$message", "$headers"); if($flgchk){ echo "A email has been sent to: $to"; } else{ echo "Error in Email sending"; } ?>
Вам нужно захватить файл загрузки с помощью $ _FILES
См. Это для отправки вложения с использованием php mail