04/08/2011, 12:19
|
| | Fecha de Ingreso: julio-2011
Mensajes: 4
Antigüedad: 13 años, 4 meses Puntos: 0 | |
Respuesta: Tengo 1script de formulario para enviar email q va perfecto xro me faltan Aqui te vá un código, para que envíes un archivo adjunto por email: Código PHP: <?php extract($_POST); //Extrae todas las variales enviadas por POST esto nos ayuda a usar p.e. $nombre en vez de usar $_POST['nombre'] ?> <html> <head> <title>Enviar archivo adjunto por email</title> </head>
<body> <?php if ($_POST) { /* Datos de Envio */ $para= "[email protected]"; // email a donde se enviará los datos del formulario $asunto="$subject MENSAJE CON ARCHIVO ADJUNTO"; $desde = stripslashes($_POST['nombre'])."<".stripslashes($_POST['email']).">"; $mensaje = "<div> <p>Nombre: $nombre</p> <p>Email: $email</p> </div>"; /* generar una cadena aleatoria que se utiliza como marcador de límite */ $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x"; //Este se utilizará al construir las cabaceras y cuerpo del mensaje /* almacenar la información del archivo en variables para un acceso más fácil */ $tmp_name = $_FILES['attach']['tmp_name']; //Nombre temporal del archivo $type = $_FILES['attach']['type']; //Tipo de formato del archivo $name = $_FILES['attach']['name']; //Nombre del archivo $size = $_FILES['attach']['size']; //Tamaño del archivo $message = $mensaje; // coloco en una variable los datos del mensaje;
/* si el archivo existe, la carga tuvo éxito */ if (file_exists($tmp_name)){ // asegura de que se trata de un archivo cargado y no un archivo de sistema if(is_uploaded_file($tmp_name)){ // abre el archivo para una lectura binaria $file = fopen($tmp_name,'rb'); // leer el contenido del archivo en una variable $data = fread($file,filesize($tmp_name)); // cierra el archivo fclose($file); // ahora tenemos que codificar $data = chunk_split(base64_encode($data)); } }
/* Ahora vamos a construir las cabeceras del mensaje */ $headers = "From: $desde\r\n" . "MIME-Version: 1.0\r\n" . "Content-Type: multipart/mixed;\r\n" . " boundary=\"{$mime_boundary}\"";
/* vamos a construir el cuerpo del mensaje */ $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . //"Content-Type: text/plain; charset=\"iso-8859-1\"\n" . /* Si deseamos enviar el mensaje como texto plano utilizamos esta linea*/ "Content-type: text/html; charset=iso-8859-1\r\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";
// ahora vamos a introducir un límite para indicar que estamos empezando el archivo adjunto // tenemos que especificar el tipo de contenido, el nombre del archivo y la disposición como // un archivo adjunto, a continuación, añadir el contenido del archivo y establecer otro límite que // indica que el final del archivo se ha alcanzado $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" . "--{$mime_boundary}--\n";
// Ahora enviamos el mensaje if (@mail($para, $asunto, $message, $headers)) { echo '<div style="padding:7px;color:#0000FF">Mensaje enviado correctamente</div>'; }else{ echo '<div style="padding:7px;color:#FF0000;">ERROR: El mensaje No se pudo enviar</div>'; } } ?> <form id="form1" name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data"> <div>Archivo adjunto: <input name="attach" type="file" id="attach" /> </div> <div>Nombre: <input type="text" name="nombre" /> </div> <div>Email: <input type="text" name="email" /> </div> <div><input type="submit" name="Submit" value="Enviar"></div> </form> </body> </html> Espero te sirva.
Saludos.
Última edición por GatorV; 04/08/2011 a las 13:39 |