Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/04/2016, 10:17
RicardGTX
 
Fecha de Ingreso: diciembre-2015
Mensajes: 64
Antigüedad: 9 años, 1 mes
Puntos: 0
me obliga a enviar archivo adjunto email

Hola chicos,
tengo este codigo php de un formulario email con archivo adjunto, pero tengo un problema. Si no adjunto un archivo al formulario me salta el mensaje de error.
No consigo hacer que se envie el email, tenga o no archivo adjunto.

alguien puede ayudarme?

Código PHP:
Ver original
  1. if($_POST && isset($_FILES['mi_archivo'])){
  2.        
  3.         $nombre = $_POST["nombre"];
  4.         $de = '@gmail.com';
  5.         $para = '@gmail.com';
  6.         $asunto = 'asunto';
  7.         $mensaje = 'mensaje';
  8.        
  9.        
  10.         $file_tmp_name    = $_FILES['mi_archivo']['tmp_name'];
  11.         $file_name        = $_FILES['mi_archivo']['name'];
  12.         $file_size        = $_FILES['mi_archivo']['size'];
  13.         $file_type        = $_FILES['mi_archivo']['type'];
  14.         $file_error       = $_FILES['mi_archivo']['error'];
  15.        
  16.        
  17.    
  18.         if($file_error>0)
  19.         {
  20.             die('Error al cargar archivo');
  21.         }
  22.    
  23.         $handle = fopen($file_tmp_name, "r");
  24.         $content = fread($handle, $file_size);
  25.         fclose($handle);
  26.         $encoded_content = chunk_split(base64_encode($content));
  27.    
  28.    
  29.             $boundary = md5("sanwebe");
  30.            
  31.             $cabeceras = "MIME-Version: 1.0\r\n";
  32.             $cabeceras .= "From:".$de."\r\n";
  33.             $cabeceras .= "Reply-To: ".$para."" . "\r\n";
  34.             $cabeceras .= "Content-Type: multipart/mixed; boundary = $boundary\r\n\r\n";
  35.            
  36.             $cuerpo = "--$boundary\r\n";
  37.             $cuerpo .= 'Content-type: text/html; utf8' . "\r\n";
  38.             $cuerpo .= "Content-Transfer-Encoding: base64\r\n\r\n";
  39.             $cuerpo .= chunk_split(base64_encode($mensaje));
  40.            
  41.             $cuerpo .= "--$boundary\r\n";
  42.             $cuerpo .="Content-Type: $file_type; name=\"$file_name\"\r\n";
  43.             $cuerpo .="Content-Disposition: attachment; filename=\"$file_name\"\r\n";
  44.             $cuerpo .="Content-Transfer-Encoding: base64\r\n";
  45.             $cuerpo .="X-Attachment-Id: ".rand(1000,99999)."\r\n\r\n";
  46.             $cuerpo .= $encoded_content;
  47.        
  48.         $sentMail = @mail($para, $asunto, $cuerpo, $cabeceras);
  49.         if($sentMail)
  50.         {      
  51.             die('Mensaje enviado.');
  52.         }else{
  53.             die('No se ha enviado el mensaje.');  
  54.         }
  55.    
  56.     }


saludos