Foros del Web » Programando para Internet » PHP »

enviar archivo adjunto al mail

Estas en el tema de enviar archivo adjunto al mail en el foro de PHP en Foros del Web. hola buen dia. tengo el siguiente formulario de contacto: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original < form id = "contactForm" action = "#" method = ...
  #1 (permalink)  
Antiguo 15/06/2013, 17:24
 
Fecha de Ingreso: octubre-2012
Mensajes: 202
Antigüedad: 12 años, 1 mes
Puntos: 0
enviar archivo adjunto al mail

hola buen dia. tengo el siguiente formulario de contacto:
Código HTML:
Ver original
  1. <form id="contactForm" action="#" method="post">
  2.                                 <fieldset>
  3.                                     <div>
  4.                                         <label>Nombre</label>
  5.                                         <input name="name"  id="name" type="text" class="form-poshytip" title="Ingrese su nombre" />
  6.                                     </div>
  7.                                     <div>
  8.                                         <label>Email</label>
  9.                                         <input name="email"  id="email" type="text" class="form-poshytip" title="Ingrese su email" />
  10.                                     </div>
  11.                                     <div>
  12.                                         <label>Curso</label>
  13.                                         <input name="web"  id="web" type="text" class="form-poshytip" title="Nombre de la capacitacion" />
  14.                                     </div>
  15.                                     <div>
  16.                                         <label>Comentario</label>
  17.                                         <textarea  name="comments"  id="comments" rows="5" cols="20" class="form-poshytip" title="Ingrese su comentario"></textarea>
  18.                                     </div>
  19.                                     <p><input type="button" value="Enviar" name="submit" id="submit" /></p>
  20.                                 </fieldset>
  21.                             </form>
tengo el archivo PHP correspondiente y funciona correctamente. lo que me gustaria es agregar un campo en el cual se pueda adjuntar un archivo de texto o pdf y eso llegue adjunto al mail.. alguien me puede ayudar??? graciasss
  #2 (permalink)  
Antiguo 15/06/2013, 18:41
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: enviar archivo adjunto al mail

Lo primero debes subir el archivo, agregando a tu form:

Cita:
<input type="file" name="file" id="file"><br>
Lo segundo cojer el archivo y enviarlo:

Código PHP:
<?php
if ($_FILES["file"]["error"] == 0){
    
/*  envio  */

    // algo que es improbable aparezca dentro del mensaje y lo delimita:
    
$mail_boundary md5(uniqid(time())); 
    
$mail_headers "MIME-Version: 1.0\r\n";
    
$mail_headers .= "Content-type: multipart/mixed;boundary=\"$mail_boundary \"";
    
$mail_headers .= "\r\n\r\n";
    
$mail_headers .= "This is a multi-part message in MIME format.";

    
$mail_headers .= "\r\n\r\n";

    
$file chunk_split(base64_encode($file));

    
$mail_body "--$mail_boundary\n";
    
$mail_body .= "Content-type: text/plain; charset=euc-kr\r\n";
    
$mail_body .= "Content-transfer-encoding: 8bit\r\n\r\n";
    
$mail_body .= "Enviando archivo bla bla bla\r\n";
    
$mail_body .= "--$mail_boundary\r\n";
    
$filename basename($_FILES['file']['name']);

$mail_body .= "Content-type: application/msword; name=$filename\r\n";
$mail_body .= "Content-transfer-encoding:base64\r\n\r\n";
$mail_body .= $file"\r\n\r\n";

$mail_body .= " --$mail_boundary--";

mail($mail_to$mail_subject$mail_body$mail_headers);
}

Cita:
Multipart messages

La MIME multipart message debe contener un 'boundary' en el "Content-Type: " header; este boundary, el cual no debe repetirse dentro del mensaje MIMI es colocado entre las partes como en el siguiente ejemplo:

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=frontier

This is a message with multiple parts in MIME format.
--frontier
Content-Type: text/plain

This is the body of the message.
--frontier
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64

PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogIC AgPHA+VGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2 h0bWw+Cg==
--frontier--
Fuentes:

http://www.webdeveloper.com/forum/sh...ch-file-in-PHP
http://en.wikipedia.org/wiki/MIME
__________________
Salu2!

Última edición por Italico76; 15/06/2013 a las 18:54

Etiquetas: formulario, mail
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 21:17.