Ferran Rosales escribió:
>
>
> Hola!
>
> Necesito hacer un formulario que envie un mail con los datos del usuario y 
> una foto que el usuario coge desde su ordenador. Se con php se puede, pero 
> ahi me pierdo mucho...alguien puede ayudarme.
>
>
> Gracias.
>
> Ferran.
> _________________________________________________________________
> Consigue el nuevo Windows Live Messenger
> http://get.live.com/messenger/overview
> -----------------------------------------------------
> ASNativos
> www.5dms.com
> subscripciones/desubscripciones
> http://asnativos.5dms.com
> -----------------------------------------------------
>
>
>   
Lo que puedes hacer es lo siguiente. Suponiendo que tienes un formulario 
en flash ya relleno, y que con el objeto FileReference ya has 
seleccionado el fichero que quieres adjuntar, cuando envíes la 
información al servidor lo harás en dos pasos. Primero subes el fichero 
al servidor como cualquier fichero que subas con FileReference, y lo 
guardas en una carpeta temporal (tmp_upload). Cuando salte el evento 
FileReference.onComplete llamas a un php al que le pasas los otros datos 
del formulario, y el nombre del fichero. Este script PHP enviará correo 
con fichero adjunto,  el fichero a adjuntar de la carpeta temporal donde 
se ha almacenado. Listo.

El PHP para enviar mail es este:

<code>

<?php
$fileatt = "./tmp_upload/". $_REQUEST['cv']; // Path to the 
file                
$fileatt_type = "application/octet-stream"; // File Type
$fileatt_name = $_REQUEST['cv']; // Filename that will be used for the 
file as the attachment

$nombre = $_REQUEST['nombre'];
$tlf1= $_REQUEST['telefono1'];
$tlf2= $_REQUEST['telefono2'];
$correo = $_REQUEST['email'];
$referencia = $_REQUEST['referencia'];

$email_from = "[EMAIL PROTECTED]"; // Who the email is from
$email_subject = "Asunto"; // The Subject of the email
$email_txt = " Mail con referencia: $referencia<br>
        <b>Nombre:</b> $nombre<br>
        <b>Telefono 1:</b> $tlf1<br>
        <b>Telefono 2:</b> $tlf2<br>
        <b>Email:</b> $correo"; // Message that the email has in it

$email_to = "[EMAIL PROTECTED]"; // Who the email is too

$headers = "From: ".$email_from;

$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);

$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

$headers .= "\nMIME-Version: 1.0\n" .
    "Content-Type: multipart/mixed;\n" .
    " boundary=\"{$mime_boundary}\"";

$email_message .= "This is a multi-part message in MIME format.\n\n" .
    "--{$mime_boundary}\n" .
    "Content-Type:text/html; charset=\"UTF-8\"\n" .
    "Content-Transfer-Encoding: 7bit\n\n" .
    $email_txt . "\n\n" ;

$data = chunk_split(base64_encode($data));

$email_message .= "--{$mime_boundary}\n" .
    "Content-Type: {$fileatt_type};\n" .
    " name=\"{$fileatt_name}\"\n" .
    //"Content-Disposition: attachment;\n" .
    //" filename=\"{$fileatt_name}\"\n" .
    "Content-Transfer-Encoding: base64\n\n" .
    $data . "\n\n" .
    "--{$mime_boundary}--\n";

$ok = @mail($email_to, $email_subject, $email_message, $headers);

if($ok) {
    echo "&mail=si";
    unlink($fileatt);
} else {
    die("Sorry but the email could not be sent. Please go back and try 
again!");
}
?>

</code> 

El fichero que recibe el fichero del FileReference podría ser este :

<code>

<?php

foreach($_FILES as $nombre=>$fichero)
{
    if(is_uploaded_file($fichero['tmp_name']))
    {
        move_uploaded_file($fichero['tmp_name'],"./tmp_upload/" . 
$fichero['name']);
       
        echo "Fichero copiado en ". realpath ("./tmp_upload/") . 
$fichero['name'];
    }
}
?>
</code>

Puedes tener problemasde concurrencia si dos personas deciden subir a la 
vez un fichero con el mismo nombre. Para evitar eso puedes cambiar el 
nombre por uno temporal, y meter el nombre temporal en una variable de 
sesión. El script de envío leera de la sesion el nombre del fichero 
temporal, y lo adjuntará, pero utilizando el nombre que se le pasa como 
variable.


Espero que sea de utilidad.

Un saludo

EvolvE

-----------------------------------------------------
ASNativos
www.5dms.com
subscripciones/desubscripciones
http://asnativos.5dms.com
-----------------------------------------------------

Responder a