Hola, buenas tardes...
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>
y este es el código en PHP para enviar el formulario:
Código PHP:
Ver originalif ($_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!