Foros del Web » Programando para Internet » PHP »

Enviar formulario con archivo adjunto a una dirección de email

Estas en el tema de Enviar formulario con archivo adjunto a una dirección de email en el foro de PHP en Foros del Web. Hola, He creado un formulario en el que se puede adjuntar un archivo, y funciona. Pero la parte que no funciona es a la hora ...
  #1 (permalink)  
Antiguo 30/01/2011, 19:57
 
Fecha de Ingreso: enero-2011
Mensajes: 2
Antigüedad: 13 años, 3 meses
Puntos: 0
Enviar formulario con archivo adjunto a una dirección de email

Hola,

He creado un formulario en el que se puede adjuntar un archivo, y funciona. Pero la parte que no funciona es a la hora de enviar ese formulario junto con el archivo a una dirección de email. No sé nada de programación, lo que he intentado ha sido una combinación de "corta, pega y cambia algo". Os agradecería mucho si alguien pudiera corregirme la codificación que pegaré a continuación. Gracias.

<form action="enviar.php" enctype="multipart/form-data" id="formulario" method="post" name="formulario" target="_self"><table class="b1noirarial" align="center" border="0" cellpadding="0" cellspacing="5" width="550"><tbody><tr><td width="38%"><div align="left"><b>Nombre</b><font color="#cc0000">* </font><b>:</b><font color="red"> </font></div></td><td width="62%"><input name="Nombre" size="30" type="text"></td></tr><tr><td width="38%"><div align="left"><b>Apellido</b><font color="#cc0000">*<font color="red"> </font><b>:</b><font color="red"> </font></font></div></td><td width="62%"><input name="Apellido" size="30" type="text"></td></tr><tr><td width="38%"><div align="left"><b>e-mail</b><font color="#cc0000">*</font><font color="red"> </font><b>:</b></div></td><td width="62%"><input name="Mail" size="30" type="text"></td></tr><tr><td width="38%"><div align="left"><b>Dirección : </b></div></td><td width="62%"><input name="Direccion" size="30" type="text"></td></tr><tr><td width="38%"><div align="left"><b>Código postal :</b></div></td><td width="62%"><input name="CodigoPostal" size="5" type="text"></td></tr><tr><td width="38%"><div align="left"><b>Ciudad : </b></div></td><td width="62%"><input name="Ciudad" size="30" type="text"></td></tr><tr><td width="38%"><div align="left"><b>País : </b></div></td><td width="62%"><input name="Pais" size="30" type="text"></td></tr><tr><td width="38%"><div align="left"><b>Teléfono : </b></div></td><td width="62%"><input name="tel" size="20" type="text"></td></tr><tr><td height="25" width="38%"><div align="left"><b>Adjuntar Manuscrito :</b></div></td><td height="25" width="62%"><b><input enctype="multipart/form-data" name="fichero" size="20" type="file"> </b> <input name="ficherotemp" type="hidden"></td></tr><tr><td valign="top" width="38%"><div align="left"><b>Bio autor, Sinopsis :</b></div></td><td width="62%"><b><textarea cols="45" name="promo" rows="10"></textarea></b></td></tr><tr><td colspan="2"><div align="center"><input name="submit" value="Enviar" type="submit"><input value="Borrar datos" type="Reset"></div></td></tr></tbody></table></form><p>&nbsp;</p><p>$sValor) $sTexto = $sTexto."\n".$sNombre." = ".$sValor; foreach ($_FILES as $vAdjunto) { if ($bHayFicheros == 0) { $bHayFicheros = 1; $sCabeceras .= "Content-type: multipart/mixed;"; $sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n"; $sCabeceraTexto = "----_Separador-de-mensajes_--\n"; $sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n"; $sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n"; $sTexto = $sCabeceraTexto.$sTexto; } if ($vAdjunto["size"] &gt; 0) { $sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n"; $sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";; $sAdjuntos .= "Content-Transfer-Encoding: BASE64\n"; $sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n"; $oFichero = fopen($vAdjunto["tmp_name"], 'r'); $sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"])); $sAdjuntos .= chunk_split(base64_encode($sContenido)); fclose($oFichero); } } if ($bHayFicheros) $sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n"; return(mail($sPara, $sAsunto, $sTexto, $sCabeceras)); } if (form_mail("[email protected]", $_POST[asunto], "Los datos introducidos en el formulario son:\n\n", $_POST[email])) echo "Su formulario ha sido enviado con exito"; ?&gt;</p><p>&lt; ?php $nombre = $_POST [ ' nombre ' ]; $apellido = $_POST [ ' apellido ' ]; $mail = $_POST [ ' mail ' ]; $direccion = $_POST [ ' direccion ' ]; $codigopostal = $_POST [ ' codigopostal ' ]; $ciudad = $_POST [ ' ciudad ' ]; $pais = $_POST [ ' pais ' ]; $telefono = $_POST [ ' telefono ' ]; $ficherotemp = $_POST [ ' ficherotemp ' ]; $bioautor_sinopsis =$_POST [ ' biosinopsis ' ]; $header = 'From: ' . $mail . ", de la poblacion ".$poblacion."\r\n"; $header .= "X-Mailer: PHP/" . phpversion() . " \r\n"; $header .= "Mime-Version: 1.0 \r\n"; $header .= "Content-Type: text/plain"; $mensaje = "Este mensaje fue enviado por " . $nombre . " \r\n"; $mensaje .= "Su apellido es: " . $apellido . " \r\n"; $mensaje .= "Su e-mail es: " . $mail . " \r\n"; $mensaje .= "direccion" . $_POST['direccion'] . " \r\n"; $mensaje .= "codigopostal " . $_POST['codigopostal'] . " \r\n"; $mensaje .= "ciudad " . $_POST['ciudad']. " \r\n"; $mensaje .= "pais " . $_POST['pais'] . " \r\n"; $mensaje .= "telefono " . $_POST['telefono'] . " \r\n"; $mensaje .= "ficherotemp" . $_POST['ficherotemp'] . " \r\n"; $mensaje .="biosinopsis".$_POST['biosinopsis'] . " \r\n"; $mensaje .= "Enviado el " . date('d/m/Y', time()); $para = '[email protected]'; $asunto = 'manuscrito enviado'; mail($para, $asunto, utf8_decode($mensaje), $header); echo 'mensaje enviado correctamente'; ?&gt;</p>
  #2 (permalink)  
Antiguo 30/01/2011, 20:01
Avatar de Kurozaki  
Fecha de Ingreso: diciembre-2010
Ubicación: Con mi Zanpakutou (Colima, MEX).
Mensajes: 175
Antigüedad: 13 años, 4 meses
Puntos: 9
Respuesta: Enviar formulario con archivo adjunto a una dirección de email

Si quereis que te ayude (Hablo por mi).
Hazme el favorcito de acomodar tu codigo que sea de facil lectura.

Asi como esta, pienso que no se nada de programacion web, hace que mi cabeza de vueltas.
*Q falta de comprensión
__________________
Diseñador y Desarrollador web :)
  #3 (permalink)  
Antiguo 31/01/2011, 09:14
 
Fecha de Ingreso: enero-2011
Mensajes: 2
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Enviar formulario con archivo adjunto a una dirección de email

Disculpas por el caos,

necesito enviar un formulario con archivo adjunto a una cuenta email, con el formulario y archivo adjunto no tengo problemas, pero no se como se enviaa una cuenta email. Ayuda, por favor. gracias.

aqui va la codificacion ordenada:


<form action="enviar.php" enctype="multipart/form-data" id="formulario" method="post" name="formulario" target="_self">

<table class="b1noirarial" align="center" border="0" cellpadding="0" cellspacing="5" width="550">
<tbody><tr><td width="38%"><div align="left"><b>Nombre</b><font color="#cc0000">* </font><b>:</b><font color="red"> </font></div></td>
<td width="62%"><input name="Nombre" size="30" type="text"></td></tr>
<tr><td width="38%"><div align="left"><b>Apellido</b><font color="#cc0000">*<font color="red"> </font><b>:</b><font color="red"> </font></font></div></td>
<td width="62%"><input name="Apellido" size="30" type="text"></td></tr>
<tr><td width="38%"><div align="left"><b>e-mail</b><font color="#cc0000">*</font><font color="red"> </font><b>:</b></div></td>
<td width="62%"><input name="Mail" size="30" type="text"></td></tr>
<tr><td width="38%"><div align="left"><b>Dirección : </b></div></td>
<td width="62%"><input name="Direccion" size="30" type="text"></td></tr>
<tr><td width="38%"><div align="left"><b>Código postal :</b></div></td>
<td width="62%"><input name="CodigoPostal" size="5" type="text"></td></tr>
<tr><td width="38%"><div align="left"><b>Ciudad : </b></div></td>
<td width="62%"><input name="Ciudad" size="30" type="text"></td></tr>
<tr><td width="38%"><div align="left"><b>País : </b></div></td>
<td width="62%"><input name="Pais" size="30" type="text"></td></tr>
<tr><td width="38%"><div align="left"><b>Teléfono : </b></div></td>
<td width="62%"><input name="tel" size="20" type="text"></td></tr>
<tr><td height="25" width="38%"><div align="left"><b>Adjuntar Manuscrito :</b></div></td><td height="25" width="62%"><b><input enctype="multipart/form-data" name="fichero" size="20" type="file"> </b> <input name="ficherotemp" type="hidden"></td></tr>
<tr><td valign="top" width="38%"><div align="left"><b>Bio autor, Sinopsis :</b></div></td><td width="62%"><b><textarea cols="45" name="promo" rows="10"></textarea></b></td></tr>
<tr><td colspan="2"><div align="center"><input name="submit" value="Enviar" type="submit"><input value="Borrar datos" type="Reset"></div></td></tr>

(hasta aqui funciona bien. El problema lo tengo a continuacion)


</tbody>
</table>
</form><p>&nbsp;</p><p>$sValor) $sTexto = $sTexto."\n".$sNombre." = ".$sValor; foreach ($_FILES as $vAdjunto) { if ($bHayFicheros == 0) { $bHayFicheros = 1;

$sCabeceras .= "Content-type: multipart/mixed;";
$sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";
$sCabeceraTexto = "----_Separador-de-mensajes_--\n";
$sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
$sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n";
$sTexto = $sCabeceraTexto.$sTexto;

} if ($vAdjunto["size"] &gt; 0) { $sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n"; $sAdjuntos .= "Content-type: ".$vAdjunto["type"].";
name=\"".$vAdjunto["name"]."\"\n";;
$sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
$sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n"; $oFichero = fopen($vAdjunto["tmp_name"], 'r');
$sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
$sAdjuntos .= chunk_split(base64_encode($sContenido));
fclose($oFichero);

} } if ($bHayFicheros) $sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n"; return(mail($sPara, $sAsunto, $sTexto, $sCabeceras));

} if (form_mail("[email protected]", $_POST[asunto], "Los datos introducidos en el formulario son:\n\n", $_POST[email])) echo "Su formulario ha sido enviado con exito"; ?&gt;</p>

<p>&lt; ?php $nombre = $_POST [ ' nombre ' ];
$apellido = $_POST [ ' apellido ' ];
$mail = $_POST [ ' mail ' ];
$direccion = $_POST [ ' direccion ' ];
$codigopostal = $_POST [ ' codigopostal ' ];
$ciudad = $_POST [ ' ciudad ' ];
$pais = $_POST [ ' pais ' ];
$telefono = $_POST [ ' telefono ' ];
$ficherotemp = $_POST [ ' ficherotemp ' ];
$bioautor_sinopsis =$_POST [ ' biosinopsis ' ];
$header = 'From: ' . $mail . ", de la poblacion ".$poblacion."\r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";
$mensaje = "Este mensaje fue enviado por " . $nombre . " \r\n";
$mensaje .= "Su apellido es: " . $apellido . " \r\n";
$mensaje .= "Su e-mail es: " . $mail . " \r\n";
$mensaje .= "direccion" . $_POST['direccion'] . " \r\n";
$mensaje .= "codigopostal " . $_POST['codigopostal'] . " \r\n";
$mensaje .= "ciudad " . $_POST['ciudad']. " \r\n";
$mensaje .= "pais " . $_POST['pais'] . " \r\n";
$mensaje .= "telefono " . $_POST['telefono'] . " \r\n";
$mensaje .= "ficherotemp" . $_POST['ficherotemp'] . " \r\n";
$mensaje .="biosinopsis".$_POST['biosinopsis'] . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());

$para = '[email protected]';
$asunto = 'manuscrito enviado';

mail($para, $asunto, utf8_decode($mensaje), $header);
echo 'mensaje enviado correctamente';
?&gt;</p>
  #4 (permalink)  
Antiguo 31/01/2011, 09:31
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 3 meses
Puntos: 128
Respuesta: Enviar formulario con archivo adjunto a una dirección de email

Compa utiliza los tags, para los diferentes lenguaje , por que mira <p>&nbsp;</p><p>$sValor) pierdes parte del code


http://blog.unijimpe.net/enviar-email-con-adjuntos/

Prueba con esa libreria

Etiquetas: email, enviar, enviar.php, html, formulario, adjuntos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:50.