RE: [PHP-ES] Mail Adjunto

From: Antonio Pérez ( aperez .en. sgth.es)
Date: Tue Mar 30 2004 - 08:34:22 CEST


Hola!:

> ¿ Sabies como puedo enviar un correo con un adjunto con la funcion
> mail() ?
> ¿Alguien tiene algún ejemplo?

  Yo hice esto hace como 2 años, y no recuerdo si saqué parte del código
de alguna parte... Supongo que será mejorable, pero me funciona... ;)

  Sugerencias a la función son bien recibidas. :-)

  Puedes adaptarla a tus necesidades Rubén, como por ejemplo quitar lo
de enviar el fichero que ha subido el usuario.

/* Envia un correo con ficheros adjuntos si se quiere.
   'ficheros' es un array con los nombres de los ficheros que queremos
   adjuntar al mensaje. Si uno de ellos es UPLOAD, se envia el fichero
que
   se haya recibido desde un formulario en el navegador. Si se deja en
   blanco, no se adjunta nada. */
function envia_correo ($destino, $origen, $tema, $cabecera, $cuerpo,
$ficheros)
{
  global $HTTP_POST_FILES;

  if ($origen!="")
    $cabecera.="From: $origen\n";

  if ((is_array($ficheros)) && (!empty($ficheros))) {
    $boundary="ALGO_" . md5(uniqid(microtime(),1));
    $cabecera.="MIME-Version: 1.0\nContent-Type: multipart/mixed;\n
boundary=\"$boundary\"";

    $mensaje="This is a multi-part message in MIME format.\n\n";
    $mensaje.="--$boundary\n";
    $mensaje.="Content-Type: text/plain;\n
charset=\"iso-8859-1\"\n";
    $mensaje.="Content-Transfer-Encoding: 8bit\n\n";

    $mensaje.="$cuerpo\n";

    foreach ($ficheros as $fichero) {
      if ($fichero=="UPLOAD") {
        $fichero=$HTTP_POST_FILES['fichero']['tmp_name'];
        $fich=$HTTP_POST_FILES['fichero']['name'];
      }
      else
        $fich=basename($fichero);

      $fp=fopen($fichero,"r");
      if ($fp) {
        $attach=fread($fp,filesize($fichero));
        $attach=chunk_split(base64_encode($attach));
        fclose($fp);

        $mensaje.="\n\n--$boundary\n";
        $mensaje.="Content-Type: application/octet-stream;\n
name=\"$fich\"\n";
        $mensaje.="Content-Transfer-Encoding: base64\n";
        $mensaje.="Content-Disposition: attachment;\n
filename=\"$fich\"\n\n";
        $mensaje.="$attach\n\n";
      }
    }
  }
  else {
    $mensaje=$cuerpo;
  }

  mail ($destino,$tema,$mensaje,$cabecera);
}

-- 
PHP Spanish Localization Talk Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


This archive was generated by hypermail 2.1.7 : Fri May 14 2004 - 16:04:43 CEST