Tengo un problema con un formulario para enviar un email, con su respectivo cuerpo en HTML (Texto) y algún archivo adjunto. Resulta que, o me envía sólo el texto o me envía sólo el adjunto. Busque por internet algunos ejemplos de como hacer esto pero no me están funcionando como debieran. Les explico:
Mi formulario es este:
Código HTML:
<form action="form-inscripcion.php" method="post" enctype="multipart/form-data" accept-charset="utf-8"> <input id="nombre" class="forma-a" type="text" name="nombre" placeholder="Nombre del solicitante ( * Requerido )" /> <input id="direccion" class="forma-a" type="text" name="direccion" placeholder="Dirección ( * Requerido )" /> <input id="postal" class="forma-b" type="text" name="postal" placeholder="Dirección postal" /> <input id="telefono" class="forma-b" type="text" name="telefono" placeholder="Teléfono ( * Requerido )" /> <input id="fax" class="forma-b" type="text" name="fax" placeholder="Fax" /> <input id="celular" class="forma-b" type="text" name="celular" placeholder="Celular" /> <input id="email" class="forma-b" type="text" name="email" placeholder="Correo electrónico ( * Requerido )" /> <input id="madre" class="forma-a" type="text" name="madre" placeholder="Nombre de la madre o tutora" /> <input id="padre" class="forma-a" type="text" name="padre" placeholder="Nombre del padre o tutor" /> ¿Cómo te enteraste del programa de verano? <textarea id="progverano" name="progverano"></textarea> ¿Qué sabes de la fundación? <textarea id="fundacion" name="fundacion"></textarea> <input id="escuela" type="text" name="escuela" placeholder="Escuela de procedencia" /><input id="grado" type="text" name="grado" placeholder="Grado" /> ¿Trabajas? <select id="trabajas" name="trabajas"> <option value="0">Opción</option> <option value="Si">Si</option> <option value="No">No</option> </select> <input id="espef" type="text" name="espef" value="Especifica" /> ¿Perteneces a organizaciones estudiantiles? <select id="organizaciones" name="organizaciones"> <option value="0">Opción</option> <option value="Si">Si</option> <option value="No">No</option> </select> <input id="org" type="text" name="org" value="Especifica" /> ¿Qué sección del programa prefiere? <select id="seccion" name="seccion"> <option value="0">Opción</option> <option value="Junio">Junio</option> <option value="Julio">Julio</option> </select> <input id="variable" type="hidden" name="variable" value="ES" /> <strong>Para adjuntar tus documentos sobre ensayos, trabajos o material solicitado da cilck en el botón siguiente</strong> <input type="file" name="formfile" id="formfile" /> ¿Terminaste? ¡Ahora envía tu solicitud de inscripción! <input id="enviar" class="forma-c" type="submit" name="enviar" value="¡Sí! ¡Quiero enviar mi solicitud ahora!" /><input id="limpiar" class="forma-c" type="reset" name="limpiar" value="No, reiniciaré el formulario" /> </form>
Código PHP:
Ver original
if ($_POST['enviar']) { $sqlEnviarForma = mysql_query("Insert into wp_forms (form_nombre, form_direccion, form_postal, form_telefono, form_fax, form_celular, form_email, form_tutora, form_tutor, form_textarea_1, form_textarea_2, form_escuela, form_grado, form_trabajo, form_trab_especific, form_organizacion, form_org, form_programa, form_textarea_3, form_forma) Values ('$_POST[nombre]','$_POST[direccion]', '$_POST[postal]', '$_POST[telefono]', '$_POST[fax]', '$_POST[celular]', '$_POST[email]', '$_POST[madre]', '$_POST[padre]', '$_POST[progverano]', '$_POST[fundacion]', '$_POST[escuela]', '$_POST[grado]', '$_POST[trabajas]', '$_POST[espef]', '$_POST[organizaciones]', '$_POST[org]', '$_POST[seccion]', '1', '$_POST[variable]')"); /* Sección de envio a el instituto */ $deemail=$_POST['email']; $sfrom=$_POST['email']; $sdestinatario= email@sitio.com.mx'; $ssubject="Formulario de Inscripción"; $shtml = ' Cuerpo del mensaje '; $num = md5(time()); //MAIL BODY $body = $shtml; $_name=$_FILES["formfile"]["name"]; $_type=$_FILES["formfile"]["type"]; $_size=$_FILES["formfile"]["size"]; $_temp=$_FILES["formfile"]["tmp_name"]; if( strcmp($_name, "") ) //FILES EXISTS { $fp = fopen($_temp, "rb"); $file = fread($fp, $_size); $file = chunk_split(base64_encode($file)); // MULTI-HEADERS Content-Type: multipart/mixed and Boundary is mandatory. $headers = "From: <$sdestinatario>\r\n"; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: multipart/mixed; "; $headers .= "boundary=".$num."\r\n"; $headers .= "--".$num."\n"; // HTML HEADERS $headers .= "Content-Type: text/html; charset=UTF-8\r\n"; $headers .= "Content-Transfer-Encoding: 8bit\r\n"; $headers .= "".$body."\n"; $headers .= "--".$num."\n"; // FILES HEADERS $headers .= "Content-Type:application/octet-stream "; $headers .= "name=\"".$_name."\"r\n"; $headers .= "Content-Transfer-Encoding: base64\r\n"; $headers .= "Content-Disposition: attachment; "; $headers .= "filename=\"".$_name."\"\r\n\n"; $headers .= "".$file."\r\n"; $headers .= "--".$num."--"; }else { //FILES NO EXISTS // HTML HEADERS $headers = "From: $sdestinatario \r\n"; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: text/html; charset=UTF-8\r\n"; $headers .= "Content-Transfer-Encoding: 8bit\r\n"; } // SEND MAIL mail($sdestinatario, $ssubject , $body, $headers); echo "<div class='ok'> <strong>El formulario se ha enviado correctamente.</strong></div>";
No localizó el porque no me deja enviar ambos (cuerpo y adjunto) al mismo tiempo. ¿Alguna idea?
De antemano les agradezco por sus comentarios.
Saludos!