Visualizzazione risultati 1 fino 16 di 16

Discussione: Mi controllate questo script?

  1. #1
    L'avatar di loading
    loading non è connesso Utente
    Data registrazione
    30-01-2003
    Residenza
    Italia
    Messaggi
    141

    Unhappy Mi controllate questo script?

    Questo script dovrebbe permettermi di inviare un file alla casella mail predefinita, solo che la mail arriva senza l'allegato (oltre a mancare il nome e il testo predefinito dentro la mail).

    Qualcuno può trovare l'errore? Grazie!

    Questo è il form della pagina di invio (in .htm)
    Codice:
    <form action="richiesta.php" method="post" name="form1" id="form1" target="_self">
    
    		Nome: <input name="nome" type="text" id="nome" size="41" style="background-color: #EDEDED; border: thin groove #D6D6D6;"><br>
    		E-mail: <input type="text" name="email" id="email" size="41" style="background-color: #EDEDED; border: thin groove #D6D6D6;"><br>
    		<br>
    		<input name="all" type="file" id="all"><br><br>
    		<input type="reset" name="Submit" value="reset" style="background-color: #FF9933; color: #3C0000; border: thin double Black;">
    		<input type="submit" name="Submit2" value="invia" style="background-color: #669933; color: #FFFF99; border: thin solid Black;" onClick="MM_validateForm('nome','','R','mail','','RisEmail','oggetto','','R','messaggio','','R');return document.MM_returnValue">
    </form>
    Questo è il codice della pagina in php che gestisce l'invio:

    Codice:
    <?php
    # recupero dati form
    	$nome = $_POST['nome'];
    	$email = $_POST['email'];
    	$messaggio = "In allegato il documento";
    	$oggetto = "Invio allegato";
    	$casella = "prova@prova.it"; # INSERIRE QUI LA CASELLA DI POSTA DOVE INVIARE LA MAIL
    
    # verifica dati inseriti
    if(($nome<>"")&&($email<>"")){
    
    # intestazioni della mail
    	$intestazioni = "MIME-Version: 1.0\n";
    	$intestazioni .= "Content-Type: multipart/mixed; boundary=\"XX-1234DED00099A\"\n";
    	$intestazioni .= "Content-Transfer-Encoding: 7bit\n";
    	$intestazioni .= "From: $email\n";
    
    # testo della mail
    	$msg = "--XX-1234DED00099A\n";
    	$msg .= "Content-Type: text/plain; charset=iso-8859-1\n";
    	$msg .= "Content-Transfer-Encoding: 7bit\n\r";
    	$msg .= $messaggio;
    
    # allegato della mail
    	$fp=@fopen($all, "r");
    		if ($fp) {
    		$data = fread($fp,filesize($all));
    		$msg .= "\n--XX-1234DED00099A\n";
    		$msg .= "Content-Type: application/octet-stream;name=\"$all_name\"\n";
    		$msg .= "Content-Transfer-Encoding: base64\n";
    		$msg .= "Content-Disposition: attachment;filename=\"$all_name\"\n";
    		$allegato = base64_encode($data);
    		$msg .= "$allegato";
    		}
    
    # invio del mail
    	$result = @mail($casella,$oggetto,$messaggio,$intestazioni,$all);
    
    # controllo risultato
    	if($result){
    		# invio eseguito
    		echo "<p>Il tuo messaggio &egrave; stato inoltrato con successo!</p><p>Grazie!</p>";
    	}else{
    		# errore server
    		echo "<p>E' stato riscontrato un errore sul server.<br>Impossibile inviare il messaggio.</p><p>Riprova pi&ugrave; tardi.</p>";
    	} end;
    }else{
    	
    	# avviso insufficienza dati	
    	echo "<p>Non hai compilato tutti i campi del modulo!</p><p>Campi mancanti:</p>";
    	if($nome==""){ echo "Nome<br>";}
    	if($email==""){ echo "Indirizzo e-mail<br>";}
    } end; ?>

  2. #2
    Guest

    Predefinito

    intanto prova a mettere nel tag form enctype="multipart/form-data"

  3. #3
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Per quello che so io non si possono mandare allegati.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  4. #4
    L'avatar di loading
    loading non è connesso Utente
    Data registrazione
    30-01-2003
    Residenza
    Italia
    Messaggi
    141

    Predefinito

    Cioè? Che vuol dire non si possono mandare allegati?

  5. #5
    L'avatar di loading
    loading non è connesso Utente
    Data registrazione
    30-01-2003
    Residenza
    Italia
    Messaggi
    141

    Unhappy

    Citazione Originalmente inviato da SoulHome
    intanto prova a mettere nel tag form enctype="multipart/form-data"
    L'ho messo ma non è cambiato nulla.


  6. #6
    Guest

    Predefinito

    le email con allegati si possono inviare, anke se è un po' + complicato delle email nomrali...adesso controllo il tuo codice e cerco di risolvere il problema....cmq se l'email ti arriva sarebbe utile ke tu postassi quello che in outlook viene chiamto 'messaggio originale' (poprioetà->dettagli->messaggio originale) cioè il msg con tutti gli header

    edit:

    nel tuo script c'erano un bel po' di errori (delle variabili inesistenti, degli end; ke nn so a ke servono, un parametro in + nella funzione mail e alcune imperfezioni nel corpo della mail...)
    cmq qst è il form corretto:
    Codice HTML:
    <form action="richiesta.php" enctype="multipart/form-data" method="post" name="form1" id="form1" target="_self">
    
    		Nome: <input name="nome" type="text" id="nome" size="41" style="background-color: #EDEDED; border: thin groove #D6D6D6;"><br>
    		E-mail: <input type="text" name="email" id="email" size="41" style="background-color: #EDEDED; border: thin groove #D6D6D6;"><br>
    		<br>
    		<input name="all" type="file" id="all"><br><br> 
    		<input type="reset" name="Submit" value="reset" style="background-color: #FF9933; color: #3C0000; border: thin double Black;">
    		<input type="submit" name="Submit2" value="invia" style="background-color: #669933; color: #FFFF99; border: thin solid Black;" onClick="MM_validateForm('nome','','R','mail','','RisEmail'  ,'oggetto','','R','messaggio','','R');return document.MM_returnValue">
    </form>
    qst invece è la pagina di invio:
    Codice PHP:
    <?php
    if(isset($_POST['email']) && isset($_POST['nome'])){
    $header="";
    $msg="";
    $boundary='--' . md5( uniqid("boundary") );
    $ctencoding="8bit";
    $subject="Invio allegato";
    $body="In allegato il documento";
    $to="TUA@MAIL.IT"; //<<--- qui ci va la tua email
    $from=$_POST['email'];
    $ctype="application/x-unknown-content-type";
    $basename=$_FILES['all']['tmp_name'];
    $name=$_FILES['all']['name'];

    $header.="From: $from\nX-Priority: 3\nTo: $to\n";
    $header.="Mime-Version: 1.0\nContent-Type: multipart/mixed;\n boundary=\"$boundary\"\n";
    $header.="Content-Transfer-Encoding: 8bit\n";

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

    $msg .="--$boundary\nContent-type: $ctype;\n name=\"$name\"\n";
    $msg .="Content-Transfer-Encoding: base64\nContent-Disposition: attachment\n filename=\"$name\"\n";
    $linesz= filesize( $basename)+1;
    $fp= fopen( $basename, 'r' );
    $content = chunk_split(base64_encode(fread( $fp, $linesz)));
    fclose($fp);
    $msg .= chr(13) . chr(10).$content;

    $result = @mail($to,$subject,$msg."\n",$header);

    if(
    $result){

    echo
    "<p>Il tuo messaggio &egrave; stato inoltrato con successo!</p><p>Grazie!</p>";
    }else{

    echo
    "<p>E' stato riscontrato un errore sul server.<br>Impossibile inviare il messaggio.</p><p>Riprova pi&ugrave; tardi.</p>";
    }

    }else{
    echo
    "<p>Non hai compilato tutti i campi del modulo!</p><p>Campi mancanti:</p>";
    if(!isset(
    $_POST['nome'])){ echo "Nome<br>";}
    if(!isset(
    $_POST['email'])){ echo "Indirizzo e-mail<br>";}
    }
    ?>
    cmq sarebbe meglio se tu mettessi dei controlli + avanzati per i campi del form....
    Ultima modifica di SoulHome : 18-12-2005 alle ore 16.07.23

  7. #7
    L'avatar di twisterdark
    twisterdark non è connesso Moderatore
    Data registrazione
    17-11-2002
    Residenza
    Hong Kong
    Messaggi
    3,226

    Predefinito

    http://forum.altervista.org/showthre...email+allegati (conferma che le email si possono inviare con allegati, e qui c'è anche uno script che funziona)

    Per riparare il tuo codice, che ad un occhiata rapida non ha errori eclatanti, come dice Soul postaci anche il messaggio originale. Sarebbe utile sapere perchè si perdono pezzi per la strada... ^^


    -------------------------------------------------------------------------------------------------------------------------------------
    Un moderatore per gestirli, un moderatore per guidarli, un moderatore per sgridarli e nel buio anche bannarli...

    ------------------------------------------------------------------------------------------------------------------------------------------

  8. #8
    L'avatar di loading
    loading non è connesso Utente
    Data registrazione
    30-01-2003
    Residenza
    Italia
    Messaggi
    141

    Predefinito

    Allora, grazie alle correzione di SoulHome adesso la mail arriva con l'allegato.
    c'è ancora una cosa, proprio per essere precisi, ed è che il nome che viene inserito non viene visualizzato. Si vede solo la mail, senza il nome.

  9. #9
    L'avatar di loading
    loading non è connesso Utente
    Data registrazione
    30-01-2003
    Residenza
    Italia
    Messaggi
    141

    Post Questo è l'header della mail che mi è arrivata

    Return-Path: <user@server>
    Received: from smtp-f4.localhost (smtp-server [212.25.179.68])
    by server (8.13.4/8.13.4/Debian-3) with ESMTP id jBIG0fGc013753
    for <indirizzo@mail.it>; Sun, 18 Dec 2005 17:00:41 +0100
    Received: from localhost (localhost [127.0.0.1])
    by smtp-f4.localhost (Postfix) with ESMTP id 480A64C70E
    for <indirizzo@email.it>; Sun, 18 Dec 2005 17:00:40 +0100 (CET)
    Received: by smtp-f4.localhost (Postfix, from userid 1000)
    id E16E84C223; Sun, 18 Dec 2005 17:00:37 +0100 (CET)
    Received: from server (server [217.64.195.220])
    by smtp-f4.localhost (Postfix) with ESMTP id 6F8264C783
    for <indirizzo@email.it>; Sun, 18 Dec 2005 17:00:34 +0100 (CET)
    Received: from server (localhost.localdomain [127.0.0.1])
    by server (8.13.4/8.13.4/Debian-3) with ESMTP id jBIG0XAS018251
    for <indirizzo@email.it>; Sun, 18 Dec 2005 17:00:33 +0100
    Received: (from asism.it@localhost)
    by server (8.13.4/8.13.4/Submit) id jBIG0Xqs018250;
    Sun, 18 Dec 2005 17:00:33 +0100
    Date: Sun, 18 Dec 2005 17:00:33 +0100
    Message-Id: <user@server>
    To: indirizzo@email.it
    Subject: Invio allegato
    From: prova@prova.it
    X-Priority: 3
    To: indirizzo@email.it
    Mime-Version: 1.0
    Content-Type: multipart/mixed;
    boundary="--41c1beab3c3ece288559dbc7ab908b7e"
    Content-Transfer-Encoding: 8bit
    X-Virus-Scanned: by AMaViS
    Ultima modifica di loading : 18-12-2005 alle ore 18.08.34

  10. #10
    L'avatar di twisterdark
    twisterdark non è connesso Moderatore
    Data registrazione
    17-11-2002
    Residenza
    Hong Kong
    Messaggi
    3,226

    Predefinito

    Scusa ma è ovvio che il nome non viene visualizzato, no lo invii...usi il nome solo per fare controlli, se ci fai caso.


    -------------------------------------------------------------------------------------------------------------------------------------
    Un moderatore per gestirli, un moderatore per guidarli, un moderatore per sgridarli e nel buio anche bannarli...

    ------------------------------------------------------------------------------------------------------------------------------------------

  11. #11
    L'avatar di loading
    loading non è connesso Utente
    Data registrazione
    30-01-2003
    Residenza
    Italia
    Messaggi
    141

    Arrow

    Citazione Originalmente inviato da twisterdark
    Scusa ma è ovvio che il nome non viene visualizzato, no lo invii...usi il nome solo per fare controlli, se ci fai caso.
    Ecco perchè! Ehm... in realtà io non so nulla di php, ecco perchè chiedo aiuto.

    E come si può avere il nome "sopra" la mail?


  12. #12
    L'avatar di twisterdark
    twisterdark non è connesso Moderatore
    Data registrazione
    17-11-2002
    Residenza
    Hong Kong
    Messaggi
    3,226

    Predefinito

    Citazione Originalmente inviato da Questo
    $header.="From: $from\nX-Priority: 3\nTo: $to\n";
    Citazione Originalmente inviato da Deve diventare questo
    $header.="From: $_POST[nome]<$from>\nX-Priority: 3\nTo: $to\n";
    P.S. Questo PS è inutile solo che non mi faceva postare per il minimo di caratteri...comunque dovrebbe funzionare così, se è $_POST[nome] la variabile nome.


    -------------------------------------------------------------------------------------------------------------------------------------
    Un moderatore per gestirli, un moderatore per guidarli, un moderatore per sgridarli e nel buio anche bannarli...

    ------------------------------------------------------------------------------------------------------------------------------------------

  13. #13
    L'avatar di loading
    loading non è connesso Utente
    Data registrazione
    30-01-2003
    Residenza
    Italia
    Messaggi
    141

    Predefinito

    E dove devo metterlo? al posto di cosa?
    Grazie!

  14. #14
    L'avatar di twisterdark
    twisterdark non è connesso Moderatore
    Data registrazione
    17-11-2002
    Residenza
    Hong Kong
    Messaggi
    3,226

    Predefinito

    Questo è il codice corretto della pagina di invio (il form è ok):
    Codice PHP:
    <?php
    if(isset($_POST['email']) && isset($_POST['nome'])){
    $header="";
    $msg="";
    $boundary='--' . md5( uniqid("boundary") );
    $ctencoding="8bit";
    $subject="Invio allegato";
    $body="In allegato il documento";
    $to="TUA@MAIL.IT"; //<<--- qui ci va la tua email
    $from=$_POST['email'];
    $fromname=$_POST['nome'];
    $ctype="application/x-unknown-content-type";
    $basename=$_FILES['all']['tmp_name'];
    $name=$_FILES['all']['name'];

    $header.="From: $fromname<$from>\nX-Priority: 3\nTo: $to\n";
    $header.="Mime-Version: 1.0\nContent-Type: multipart/mixed;\n boundary=\"$boundary\"\n";
    $header.="Content-Transfer-Encoding: 8bit\n";

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

    $msg .="--$boundary\nContent-type: $ctype;\n name=\"$name\"\n";
    $msg .="Content-Transfer-Encoding: base64\nContent-Disposition: attachment\n filename=\"$name\"\n";
    $linesz= filesize( $basename)+1;
    $fp= fopen( $basename, 'r' );
    $content = chunk_split(base64_encode(fread( $fp, $linesz)));
    fclose($fp);
    $msg .= chr(13) . chr(10).$content;

    $result = @mail($to,$subject,$msg."\n",$header);

    if(
    $result){

    echo
    "<p>Il tuo messaggio &egrave; stato inoltrato con successo!</p><p>Grazie!</p>";
    }else{

    echo
    "<p>E' stato riscontrato un errore sul server.<br>Impossibile inviare il messaggio.</p><p>Riprova pi&ugrave; tardi.</p>";
    }

    }else{
    echo
    "<p>Non hai compilato tutti i campi del modulo!</p><p>Campi mancanti:</p>";
    if(!isset(
    $_POST['nome'])){ echo "Nome<br>";}
    if(!isset(
    $_POST['email'])){ echo "Indirizzo e-mail<br>";}
    }
    ?>
    cmq sarebbe meglio se tu mettessi dei controlli + avanzati per i campi del form....[/QUOTE]


    -------------------------------------------------------------------------------------------------------------------------------------
    Un moderatore per gestirli, un moderatore per guidarli, un moderatore per sgridarli e nel buio anche bannarli...

    ------------------------------------------------------------------------------------------------------------------------------------------

  15. #15
    L'avatar di loading
    loading non è connesso Utente
    Data registrazione
    30-01-2003
    Residenza
    Italia
    Messaggi
    141

    Predefinito

    twisterdark, grazie tantissimo! Funziona perfettamente!
    Grazie a tutti!

  16. #16
    L'avatar di twisterdark
    twisterdark non è connesso Moderatore
    Data registrazione
    17-11-2002
    Residenza
    Hong Kong
    Messaggi
    3,226

    Predefinito

    Citazione Originalmente inviato da loading
    twisterdark, grazie tantissimo! Funziona perfettamente!
    Grazie a tutti!
    Ma figurati, piuttosto mi hai ricordato che esiste anche il "nome". L'ho appena inserito anche io nel mio form email...prima non ci avevo proprio pensato
    Cmq è abbastanza pesante come codice quello che usi...cioè viene allungato dalle variabili, io invece spesso uso direttamente quella globale $_POST['x'] :)


    -------------------------------------------------------------------------------------------------------------------------------------
    Un moderatore per gestirli, un moderatore per guidarli, un moderatore per sgridarli e nel buio anche bannarli...

    ------------------------------------------------------------------------------------------------------------------------------------------

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •