Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661

    [php] form invio mail con inserimento allegato

    ciao,

    esiste qualcosa di pronto che rispecchi questa situazione.. possibilità di inivare una mail dal sito compilando un form di raccolta dati, ma con la particolarità di poter allegare un FILE alla mail.

    si può fare?

    grazie

    allego immagine per chiarmenti
    Immagini allegate Immagini allegate
    figlio perso e MAI ritrovato....?

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Certo che si puo' fare.

    Hai presente come fanno le web mail? Tipo squirrel mail / yahoo / gmail etc?

    Fai una sezione che si dedica agli attachment, ovviamente il file chedeve essere allegato va uploadato prentivamente.

    Poi dai un occhio a questa classe qua, molto comoda per gestire le email:
    http://www.phpguru.org/static/mime.mail.html

    ----------------------
    Nota:
    I file in attachment sono gestiti come testo rinchiuso tra delimitatori specifici. Tale testo se il file e' binario va convertito in base64 con la relativa funzione PHP.
    Cmq la classe che toriv al link che ho scritto gia' gestisce tutto per cui se ti serve usala e' moooooooolto comoda.
    ----------------------

    Ciauz.

  3. #3
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661
    ciao, grazie per il suggerimento... ma non sono stato capace di farlo andare....


    ho trovato su calanel php di HTML.it

    questo script:
    Codice PHP:
    <?php
    /*
    +--------------------------------------------------------------------------------
    |        classe l'invio delle mail in formato html, e volendo con allegati
    |        è stato scritta da Andrea Tarquini, tutti i diritti riservati
    |        Vers. 1.0
    |        Contatti:
    |                mail:    [email]andreat.80@gmail.com[/email]
    |                icq:    305837380
    |        Data Febbraio 2005
    |
    |        Uso

    |             $pntMail=new sentMail();
    |            $pntMail->setMittente('mittende@mail.it');
    |            $pntMail->setNomeFile('nome_file');
    |            $pntMail->setIndFile('percorso_del_file');
    |            $pntMail->setDestinatario('destinatario@mail.it');
    |            $pntMail->setTesto('Testo che si va ad inserire dento la mail in formato html');
    |            $pntMail->setOggetto('Oggetto mail');
    |            $pntMail->setFileType('tipo_del_file');
    |            if($pntMail->inviaMail())
    |                 echo 'mail inviata';
    |            else
    |                echo 'mail non inviata';



    |  +--------------------------------------------------------------------------------
    */
    class sentMail{
        
    //dichiarazione delle propietà
        
    var $testo,$mittente,$destinatario,$oggetto,$errore,$titolo,$content,$replay,$nomeFile,$indFile,$fType,$inte;
        
        
    //metodo costruttore
        
    function sentMail(){        
            
    $this->destinatario=array();
            
    $this->errore=array();
            
    $this->content='multipart/alternative';
        }
        
        
    //metodo che imposta il mittende che invia la mail
        
    function setMittente($inMittende){
            
    $this->mittente=$inMittende;
        }
        
        
    //metodo che imposta il contenuto della mail
        
    function setTesto($inTesto){
            
    $this->testo=$inTesto;
        }
        
        
    //metodo che mimposta l'oggetto della mail
        
    function setOggetto($inOggetto){
            
    $this->oggetto=$inOggetto;
        }
        
    //metodo che imposta il nome del file
        
    function setNomeFile($inFile){$this->nomeFile=$inFile;}
        
        
    //metodo che imposta l'indirizzo del file
        
    function setIndFile($inFile){$this->indFile=$inFile;}
        
        
    //metodo che imposta il type del file
        
    function setFileType($inFile){$this->fType=$inFile;}
        
        
    //metodo che imposta la mail per la risposta
        
    function setReplay($inReplay){$this->replay=$inReplay;}
        
        
    //metodo che imposta il content delle mail
        
    function setContent($inCont){$this->content=$inCont;}
        
        
    //metodo che imposta il destinatario della mail
        
    function setDestinatario($inDestinatario){
            if(
    is_array($inDestinatario))
                
    $this->destinatario=$inDestinatario;
            else{
                
    $tmpDet=explode(',',$inDestinatario);
                
    $this->destinatario=$tmpDet;
            }
        }
        
        
    //metodo che imposta le intestazioni della mail
        
    function setInte($inValue){$this->inte=$inValue;}
        
        
    //metodo che imposta il titolo della mail
        
    function setTitolo($inTitolo){$this->titolo=$inTitolo;}
        
        
    //metodo che restitusce l'errore
        
    function getErrore(){return $this->errore;}
        
        
    //metodo che invia la mail
        
    function inviaMail(){
            
    $mess="<html><head>
            <meta http-equiv=Content-Type content=\"text/html; charset=iso-8859-1\">
            <title>
    $this->titolo</title>
            
    $this->inte
            </head>
            <body bgColor=#ffffff link=#333333 alink=#333333 vlink=#333333>
            
    $this->testo
            </body></html>"
    ;
            
    $intestazioni "From: $this->mittente\n";
            (
    $this->replay!='') ? $intestazioni.="Replay-to:".$this->replay."\n" "\n";
            
    $intestazioni.="X-Mailer: Sismail Web Email Interface\nMIME-version: 1.0\nContent-type: $this->content;\n boundary=\"Message-Boundary\"\n";
            (
    $this->nomeFile) ? $intestazioni.="\nContent-transfer-encoding: 7BIT\nX-attachments: $this->nomeFile'';
            
    $body_top="--Message-Boundary\n";
            
    $body_top.="Content-type: text/html; charset=iso-8859-1\n"
            
    $body_top.="Content-transfer-encoding: 7BIT\n"
            
    $body_top.="Content-description: Mail message body\n\n";  
            
    $msg_body=$body_top.$mess;
            if(
    $this->nomeFile!=''){
                
    $f=fopen($this->indFile,'r');
                
    $contenuto=fread($f,filesize($this->indFile));
                
    $enco_att=chunk_split(base64_encode($contenuto));
                
    fclose($f);
                if(
    $this->fType!='' && $this->indFile!=''){
                    
    $msg_body .= "\n\n--Message-Boundary\n";
                    
    $msg_body .= "Content-type: $this->fType; name=\"$this->nomeFile\"\n";
                    
    $msg_body .= "Content-Transfer-Encoding: BASE64\n";
                    
    $msg_body .= "Content-disposition: attachment; filename=\"$this->nomeFile\"\n\n";
                    
    $msg_body .= "$enco_att\n";
                    
    $msg_body .= "--Message-Boundary--\n";
                }
            }
            foreach(
    $this->destinatario as $tmpIndex=>$tmpValue){
                if(!
    mail($tmpValue,$this->oggetto,$msg_body,$intestazioni))
                    return 
    FALSE;
            }
            return 
    TRUE;
        }
    }

    ?>
    come si fa utilizzare? qualche anima pia che mi fa un piccolo esempio....

    grazie
    figlio perso e MAI ritrovato....?

  4. #4
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    devi includere la classe nella pagina con un include() o un require().

    poi

    Codice PHP:
     $pntMail=new sentMail();
    |            
    $pntMail->setMittente('mittende@mail.it');
    |            
    $pntMail->setNomeFile('nome_file');
    |            
    $pntMail->setIndFile('percorso_del_file');
    |            
    $pntMail->setDestinatario('destinatario@mail.it');
    |            
    $pntMail->setTesto('Testo che si va ad inserire dento la mail in formato html');
    |            
    $pntMail->setOggetto('Oggetto mail');
    |            
    $pntMail->setFileType('tipo_del_file');
    |            if(
    $pntMail->inviaMail())
    |                 echo 
    'mail inviata';
    |            else
    |                echo 
    'mail non inviata' 
    E' un oggetto. E come tutti gli oggetti fatti come dio comanda hanno getter e setter per gestire gli attributi. Poi hanno gli altri metodi.

  5. #5
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661
    bene!

    ma come faccio a collegarlo al mio FORM?


    grazie
    figlio perso e MAI ritrovato....?

  6. #6
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    il tuo form ha un campo che si chiama action=""

    quando viene effettuato il submit il browesr passa i dati all'indirizzo nell'attributo action

    quindi

    <form ... action="./mioscript.php" method="post">
    </form>

    una volta fatto il submit interroghera' il file mioscript.php che sta nella stessa dir del file html dove c'e' il form.

    nel php poi intertcetti i valori con $_POST[<nomecampo>] ....

    sempre su mioscript.php hai varie opzioni per inserire la classe per la mail.

    1) Copi e incolli il codice nella pagina.

    2) Crei un file e ci metti il codice della classe dentro
    2.1) nel file mioscript.php fai include([percorso del file con la classe]);
    2.2) nel file mioscript.php fai require([percorso del file con la classe]);

    e poi usi quello che ti serve come da tutorial.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.