Foros del Web » Programando para Internet » PHP »

Adjuntar archivo en mail PHP

Estas en el tema de Adjuntar archivo en mail PHP en el foro de PHP en Foros del Web. Buenas, soy bastante novato con PHP y estoy necesitando armar un formulario web para envio de mail con adjunto de archivo. Entre manuales y la ...
  #1 (permalink)  
Antiguo 30/09/2008, 23:15
 
Fecha de Ingreso: septiembre-2008
Mensajes: 1
Antigüedad: 15 años, 7 meses
Puntos: 0
Exclamación Adjuntar archivo en mail PHP

Buenas, soy bastante novato con PHP y estoy necesitando armar un formulario web para envio de mail con adjunto de archivo. Entre manuales y la web he hecho lo siguiente. El mail llega, pero sin el adjunto. Espero puedan ayudarme. Muchas gracias!

<?php
require ("../aut_config.inc.php");
$connection = mysql_connect ($sql_host,$sql_usuario,$sql_pass) or die ("No fue posible conectarse al server");
$db = mysql_select_db ($sql_db,$connection) or die ("Consulta fallida: " . mysql_error());
$sql_tabla="telmexute";
$usuario_log=$_SESSION['usuario_login'];
$contratista=$_POST['Itm_1'];
$tipo=$_POST['Itm_2'];
$cliente=$_POST['Itm_3'];
$localidad=$_POST['Itm_4'];
$fecha1=$_POST['Itm_5'];
$fecha2=$_POST['Itm_6'];
$hora1=$_POST['Itm_7'];
$hora2=$_POST['Itm_8'];
$hora3=$_POST['Itm_9'];
$hora4=$_POST['Itm_10'];
$diagnostico=$_POST['Itm_11'];
$observacion=$_POST['Itm_12'];
$tecnico=$_POST['Itm_13'];
$firma=$_POST['Itm_14'];
$ip=$_SERVER['REMOTE_ADDR'];
mysql_query("INSERT INTO $sql_tabla values ('','$contratista','$tipo','$cliente','$localidad' ,'$fecha1','$fecha2','$hora1','$hora2','$hora3','$ hora4','$diagnostico','$observacion','$tecnico','$ firma','$usuario_log','$ip',NOW())")or die(mysql_error());
mysql_close();
$Msg = "Cierre Web\r\n\r\n";
$UserData .= "Contratista: " . $_POST["Itm_1"] . "\r\n";
$UserData .= "Tipo de Cita: " . $_POST["Itm_2"] . "\r\n";
$UserData .= "Cliente / Municipio: " . $_POST["Itm_3"] . "\r\n";
$UserData .= "Localidad / Partido: " . $_POST["Itm_4"] . "\r\n";
$UserData .= "Fecha Recepcion: " . $_POST["Itm_5"] . "\r\n";
$UserData .= "Fecha Intervención: " . $_POST["Itm_6"] . "\r\n";
$UserData .= "Hora Llegada: " . $_POST["Itm_7"] . "\r\n";
$UserData .= "Hora Comienzo: " . $_POST["Itm_8"] . "\r\n";
$UserData .= "Hora Término: " . $_POST["Itm_9"] . "\r\n";
$UserData .= "Hora Salida: " . $_POST["Itm_10"] . "\r\n";
$UserData .= "Diagnostico: " . $_POST["Itm_11"] . "\r\n";
$UserData .= "Tareas Realizadas: " . $_POST["Itm_12"] . "\r\n";
$UserData .= "Técnico: " . $_POST["Itm_13"] . "\r\n";
$UserData .= "Aclaracion firma cliente: " . $_POST["Itm_14"] . "\r\n";
$attachment = $_POST['archivo'];
$attachment_MINE_type = $_POST['archivo'];
$handle = fopen ($attachment, "rb");
$data = fread ($handle, filesize ($attachment));
fclose ($handle);
$boundary = "---Multipart_Boundary---";
$headers = "\nMIME-Version: 1.0\n".
"Content-Type: multipart/mixed;\n".
" boundary=\"" . $boundary . "\"";
$data =chunk_split(base64_encode($data));
$text = "--" . $boundary . "\n".
"Content-Type:text/plain\nContent-Transfer-Encoding:
7bit\n\n" .
$message . "\n\n--" . $boundary . "\n" .
"Content-Type: " . $attachment_MINE_type . ";\n name=\"" .
$attachment . "\"\nContent-Transfer-Encoding_
base64\n\n" .
$data . "\n\n--" . $boundary . "\n\n--";
mail( "[email protected]", "Cierre Web", $Msg . $UserData, $headers, "From: [email protected]");
@header("Location: ../confirute.php");
?>
  #2 (permalink)  
Antiguo 01/10/2008, 08:48
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: Adjuntar archivo en mail PHP

Mensaje movido al foro de PHP desde Editores Web.

Bienvenido acarrion

Saludos,
  #3 (permalink)  
Antiguo 01/10/2008, 09:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Adjuntar archivo en mail PHP

extraño que no te marque errores... eh

Cita:
$attachment = $_POST['archivo'];// <- esto va mal...
$attachment_MINE_type = $_POST['archivo'];// (y esto, son iguales!!?)
demás, los datos $attachment deben ir en los $headers ??

y $data y $message que haces con ellas??

PDTA:

mejor usa PHPMailer (googlea)

suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 29/10/2008, 03:35
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años
Puntos: 5
Respuesta: Adjuntar archivo en mail PHP

Yo me he currado un formulario que envia un adjunto por email, con ayuda de los comentarios en php.net:

Código HTML:
<script type="text/javascript">
<!--
function envia() {
	var frm = document.forms.contacta;
	var emfilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var telfilter = /^([689]{1})+([0-9]{8})+$/;
	if (frm.dept.value == '') { alert('Elija un departamento'); return false; }
	if (frm.nombre.value == '' || frm.nombre.value == 'Introduzca su nombre') { alert('Introduzca su nombre'); return false; }
	if (!emfilter.test(frm.mail.value )) { alert('Introduzca una dirección de correo electrónico'); return false; }
	if (frm.tel.value != '' && !telfilter.test(frm.tel.value )) { alert('Introduzca un teléfono correcto'); return false; }
	if (frm.mensaje.value == '' || frm.mensaje.value == 'Escriba su consulta') { alert('Escriba el mensaje'); return false; }
	return true;
	}
//-->
</script>
<form method="post" name="contacta" action="mailpost.php" enctype="multipart/form-data" onSubmit="return envia()">
<table summary="Formulario de contacto">
  <tr>
    <td colspan="2"><strong>Env&iacute;anos un mensaje</strong> a trav&eacute;s del siguiente formulario de contacto:</td>
  <tr>
    <td><label for="dept">Departamento al que<br>dirige su consulta<sup>*</sup>:</label></td>
    <td>
      <select name="dept" id="dept">
        <option value="">&nbsp;</option>
        <option value="1">Departamento 1</option>
        <option value="2">Departamento 2</option>
        <option value="3">Departamento 3</option>
      </select>
    </td>
  </tr><tr>
    <td><label for="nombre">Nombre<sup>*</sup>:</label></td>
    <td><input type="text" name="nombre" id="nombre"></td>
  </tr><tr>
    <td><label for="mail">e-mail:</label></td>
    <td><input type="text" name="mail" id="mail"></td>
  </tr><tr>
    <td ><label for="tel">Tel&eacute;fono de contacto:</label></td>
    <td><input type="text" name="tel" id="tel" size="10" maxlength="9"></td>
  </tr><tr>
    <td><label for="mensaje">Mensaje:</label></td>
    <td><textarea rows="5" cols="30" name="mensaje" id="mensaje"></textarea></td>
  </tr><tr>
    <td><label for="attach">Adjuntar archivo:</label></td>
    <td><input type="file" name="attach" id="attach"> (m&aacute;ximo 2MB)</td>
  </tr><tr>
    <td colspan="2">
      <input type="submit" value="ENVIAR"> -
      <input type="reset" value="LIMPIAR"></td>
  </tr>
</table>
</form> 
Código PHP:
if ($_POST) {
  
$para "[email protected]";
  switch (
$_POST['dept']) {
    case 
1$para .= ", [email protected]"; break;
    case 
2$para .= ", [email protected]"; break;
    case 
3$para .= ", [email protected]"; break;
    }
  
$asunto "Mensaje desde la Web [example.com]";

  
$mensaje "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n"
  
"<html>\n<head>\n<style type=\"text/css\">td { font-family:Verdana; font-size:10px;}</style>\n</head>\n"
  
"<body>\n<div style=\"width:780px;\"><table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"4\" align=\"left\">\n"
  
"<tr>\n<td width=\"20%\">Nombre:</td>\n<td><span style=\"font-weight:bold;\">{$_POST['nombre']}</span></td>\n</tr>\n"
  
"<tr><td>Tel&eacute;fono:</td><td><span style=\"font-weight:bold;\">{$_POST['tel']}</span></td></tr>\n"
  
"<tr><td>e-mail:</td><td><span style=\"font-weight:bold;\">{$_POST['mail']}</span></td></tr>\n"
  
"<tr><td valign=\"top\">Mensaje:</td><td>".str_replace("\n""<br>"$_POST['mensaje'])."</td></tr>\n"
  
"<tr><td colspan=\"2\"><hr></td></tr>\n"
  
"<tr><td>IP:</td><td><span style=\"font-weight:bold;\">{$_SERVER['REMOTE_ADDR']}</span></td></tr>\n"
  
"<tr><td>Fecha/Hora:</td><td><span style=\"font-weight:bold;\">".date("d/m/Y H:i"time())."</span></td></tr>\n"
  
"<tr><td colspan=\"2\"><hr></td></tr>\n"
  
"<tr><td colspan=\"2\" style=\"font-size:xx-small\">No responda a este mensaje ya que es enviado por un servicio autom&aacute;tico</td></tr>\n"
  
"</table>\n</div>\n</body>\n</html>";
  
$hd "From: Formulario Web <[email protected]>\r\n"
  
"Reply-To: Formulario Web <[email protected]>\r\n"
  
"Return-Path: Formulario Web <[email protected]>\r\n"
  
"Message-ID: <".time()."[email protected]>\r\n"
  
"X-Mailer: PHP v".phpversion()."\r\n"
  
"MIME-Version: 1.0\n"
  
"Content-type: text/html; charset=iso-8859-1\r\n";

  if (
$_FILES && is_uploaded_file($_FILES['attach']['tmp_name']))
    {
    
$filename $_FILES['attach']['name'];
    
$filemime $_FILES['attach']['type'];
    
$filsize =  $_FILES['attach']['size'];
    
$fileatt $_FILES['attach']['tmp_name'];
    
$file fopen($fileatt,'rb');
    
$data fread($filefilesize($fileatt));
    
fclose($file);
    
$data chunk_split(base64_encode($data));
    
$uid md5(uniqid(time()));

    
$hd "From: Formulario Web <[email protected]>\r\n"
    
"Reply-To: Formulario Web <[email protected]>\r\n"
    
"Return-Path: Formulario Web <[email protected]>\r\n"
    
"Message-ID: <".time()."[email protected]>\r\n"
    
"X-Mailer: PHP v".phpversion()."\r\n";

    
$hd .= "MIME-Version: 1.0\r\n\r\n"
    
"Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n";

    
$msg "--".$uid."\r\n"
    
"Content-Type: multipart/alternative; boundary=\"".$uid."_alt_\"\r\n\r\n";

    
$msg .= "--".$uid."_alt_\r\n"
    
"Content-Type: text/plain; charset=iso-8859-1\r\n"
    
"Content-Transfer-Encoding: 8bit\r\n\r\n"
    
strip_tags(str_replace("<br>""\n"substr($mensaje, (strpos($mensaje"<body>")+6))))."\r\n\r\n";

    
$msg .= "--".$uid."_alt_\r\n"
    
"Content-Type: text/html; charset=iso-8859-1\r\n"
    
"Content-Transfer-Encoding: 8bit\r\n\r\n"
    
$mensaje."\r\n\r\n";

    
$msg .= "--".$uid."_alt_--\r\n\r\n";

    
$msg .= "--".$uid."\r\n"
    
"Content-Type:".$filemime."; name=\"".$filename."\"\r\n"
    
"Content-Transfer-Encoding: base64\r\n"
    
"Content-Description: ".$filename."\r\n"
    
"Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"
    
$data."\r\n\r\n"
    
"--".$uid."--\r\n\r\n";

    
$mensaje $msg;
    }

  if(
mail($para$asunto$mensaje $hd)) echo "Mensaje enviado";
  else echo 
"Mensaje NO enviado";

Espero que sirva de ayuda
  #5 (permalink)  
Antiguo 04/12/2008, 11:36
 
Fecha de Ingreso: diciembre-2004
Mensajes: 296
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: Adjuntar archivo en mail PHP

Hola, y para enviar más de un archivo adjunto, podéis poner el código?

saludos
__________________
Visitar:
www.vinosyrecetas.com
www.galerias-arte.com
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 19:24.