Te mando una copia de una respuesta que di en una pregunta similar: Este script sube archivos al servidor: <? $carpeta="temp/"; if($subir) { if(!$nfile) echo "Archivo demasiado grande (máximo ".$MAX_FILE_SIZE."Kb)o desconocido"; else { if(!@copy($nfile,$carpeta.$nfile_name)) echo "Error al intentar subir el archivo"; //La carpeta no existe o bien no tiene derechos de escritura else echo "Archivo <b>".$nfile_name."</b> (".($nfile_size/1000)." bytes) copiado en <b>".$carpeta."</b>"; } } else { echo "<form action=".$PHP_SELF." ENCTYPE='multipart/form-data' method='post'>"; echo "<input type=file name='nfile'>"; echo "<input type=hidden name='MAX_FILE_SIZE' value=2000>"; echo "<input type=submit value='Subir archivo' name='subir'>"; } ?> El campo MAX_FILE_SIZE limita el tamaño del archivo al que tu quieras. Lo que puedes hacer es incluir un link en el mensaje para descargar los archivos, y borrarlos después (usando un contador de descargas para saber si los han bajado ya o no). Si prefieres enviar el archivo en lugar de un link, ahí tienes un par de artículos (en inglés y algo densos ;p) sobre el uso de MIME en PHP para enviar archivos adjuntos: http://www.phpbuilder.com/columns/kartic20000807.php3 http://www.zend.com/codex.php?id=103&single=1 He supuesto que los archivos que quieres adjuntar no son de texto, en caso contrario no tendrías ese problema ya que podrías guardar su contenido en una variable con fread().