• User

    Invio form con allegato...ma problema

    Ciao
    Vorrei implementare questo script in modo che invii i dati compilati anche se non ho nessun file da allegare.
    Invece ora lo script prevede solo che ci sia anche l'allegato, infatti se provo ad inviare senza nessun allegato la mail arriva vuota, allegando un file tutti i dati completi.
    il file in questione è:

    <?php

    $destinatario = $_POST['destinatario'];
    $nome=$_POST['nome'];
    $cognome=$_POST['cognome'];
    $oggetto=$_POST['oggetto'];
    $mail=$_POST['mail'];
    $citta=$_POST['citta'];
    $telefono=$_POST['telefono'];
    $message=$_POST['message'];

    $messaggio="
    Nome : $nome
    Cognome : $cognome
    Oggetto : $oggetto
    Mail : $mail
    Città : $citta
    Telefono : $telefono
    Messaggio : $message
    ";

    $allegato = $_FILES['allegato']['tmp_name'];
    $allegato_type = $_FILES['allegato']['type'];
    $allegato_name = $_FILES['allegato']['name'];

    $headers = "From: " . $mail;
    $msg = "";

    if (is_uploaded_file($allegato))
    {
    $file = fopen($allegato,'rb');
    $data = fread($file, filesize($allegato));
    fclose($file);
    $data = chunk_split(base64_encode($data));
    $semi_rand = md5(time());
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

    $headers .= "\nMIME-Version: 1.0\n";
    $headers .= "Content-Type: multipart/mixed;\n";
    $headers .= " boundary="{$mime_boundary}"";
    $msg .= "This is a multi-part message in MIME format.\n\n";
    $msg .= "--{$mime_boundary}\n";

    $msg .= "Content-Type: text/plain; charset="iso-8859-1"\n";
    $msg .= "Content-Transfer-Encoding: 7bit\n\n";
    $msg .= $messaggio . "\n\n";
    $msg .= "--{$mime_boundary}\n";

    $msg .= "Content-Disposition: attachment;\n";
    $msg .= " filename="{$allegato_name}"\n";
    $msg .= "Content-Transfer-Encoding: base64\n\n";
    $msg .= $data . "\n\n";

    $msg .= "--{$mime_boundary}--\n";

    if (mail($destinatario, $oggetto, $msg, $headers))
    {

    header("Refresh: 5; URL=index.html");
    echo "<br><p align='center'>Mail inviata con successo ! <br> Sarete contattati al più presto ! <br><br> Reindirizzamento....</p>";

    }else{

    echo "<p>Errore!</p>";

    }

    }
    else
    {
    echo "<p>Errore!</p>";
    }

    grazie in anticipo.


  • User

    un aiuto mi è stato dato.......però ora la mail arriva con i soli dati del form se non allego file, arriva invece solo l'allegato se inserisco allegato e dati
    :arrabbiato: help me please
    modifica:

    <?php

    $destinatario = $_POST['destinatario'];
    $nome=$_POST['nome'];
    $cognome=$_POST['cognome'];
    $oggetto=$_POST['oggetto'];
    $mail=$_POST['mail'];
    $citta=$_POST['citta'];
    $telefono=$_POST['telefono'];
    $message=$_POST['message'];

    $messaggio="
    Nome : $nome
    Cognome : $cognome
    Oggetto : $oggetto
    Mail : $mail
    Città : $citta
    Telefono : $telefono
    Messaggio : $message
    ";

    $allegato = $_FILES['allegato']['tmp_name'];
    $allegato_type = $_FILES['allegato']['type'];
    $allegato_name = $_FILES['allegato']['name'];

    if (is_uploaded_file($allegato)) {

    $headers = "From: " . $mail;
    $msg = "";

    $file = fopen($allegato,'rb');
    $data = fread($file, filesize($allegato));
    fclose($file);
    $data = chunk_split(base64_encode($data));
    $semi_rand = md5(time());
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

    $headers .= "\nMIME-Version: 1.0\n";
    $headers .= "Content-Type: multipart/mixed;\n";
    $headers .= " boundary="{$mime_boundary}"";
    $msg .= "This is a multi-part message in MIME format.\n\n";
    $msg .= "--{$mime_boundary}\n";

    $msg .= "Content-Type: text/plain; charset="iso-8859-1"\n";
    $msg .= "Content-Transfer-Encoding: 7bit\n\n";
    $msg .= "$messaggio\n\n";
    $msg .= "--{$mime_boundary}\n";

    $msg .= "Content-Disposition: attachment;\n";
    $msg .= " filename="{$allegato_name}"\n";
    $msg .= "Content-Transfer-Encoding: base64\n\n";
    $msg .= "$data\n\n";

    $msg .= "--{$mime_boundary}--\n";

    $msg .= $messaggio; # Forse non era incluso il messaggio?

    if (mail($destinatario, $oggetto, $msg, $headers)) {

    header("Refresh: 5; URL=index.html");
    echo "<br><p align='center'>Mail inviata con successo ! <br> Sarete contattati al più presto ! <br><br> Reindirizzamento....</p>";

    } else { echo "Errore"; }

    } else {

    $headers = "From: " . $mail;
    $msg = $messaggio;

    if (mail($destinatario, $oggetto, $msg, $headers)) {

    header("Refresh: 5; URL=index.html"); 
    echo "<br><p align='center'>Mail inviata con successo - MA SENZA ALLEGATO - ! <br> Sarete contattati al più presto ! <br><br> Reindirizzamento....</p>"; 
    

    } else { echo "Errore"; }

    }


  • User

    Funziona...grazie per l'aiuto a tutti quanti :p:p:p:p:p:p:p:p

    [PHP]<?php
    // Recuperiamo i valori dal form
    $destinatario = $_POST['destinatario'];
    $nome=$_POST['nome'];
    $cognome=$_POST['cognome'];
    $oggetto=$_POST['oggetto'];
    $mail=$_POST['mail'];
    $citta=$_POST['citta'];
    $telefono=$_POST['telefono'];
    $message=$_POST['message'];

    $messaggio="
    Nome : $nome
    Cognome : $cognome
    Oggetto : $oggetto
    Mail : $mail
    Città : $citta
    Telefono : $telefono
    Messaggio : $message
    ";
    // Creiamo le variabili per il file attachment
    $allegato = $_FILES['allegato']['tmp_name'];
    $allegato_type = $_FILES['allegato']['type'];
    $allegato_name = $_FILES['allegato']['name'];
    // Verifichiamo se è stato eseguito l'upload del file
    if (is_uploaded_file($allegato)) {

    $headers = "From: " . $mail;
    $msg = "";
    // usiamo la funzione fopen e fread per aprire e leggere il file e poi chiudiamo con fclose
    $file = fopen($allegato,'rb');
    $data = fread($file, filesize($allegato));
    fclose($file);
    // Codifichiamo il file adattandolo a base64 usando la funzione chunk_split di php
    $data = chunk_split(base64_encode($data));
    /* Creiamo una variabile per un divisore che dividere la parte testuale del messaggio dal file stesso altrimenti riceveremo una serie illeggibili di caratteri
    */
    $semi_rand = md5(time());
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
    // Aggiungo le intestazioni necessarie per l'allegato
    $headers .= "\nMIME-Version: 1.0\n";
    $headers .= "Content-Type: multipart/mixed;\n";
    $headers .= " boundary="{$mime_boundary}"";
    // Definisco il tipo di messaggio (MIME/multi-part)
    $msg .= "This is a multi-part message in MIME format.\n\n";
    // Mettiamo il separatore
    $msg .= "--{$mime_boundary}\n";

    // Parte "testuale" del messaggio
    $msg .= "Content-Type: text/plain; charset="iso-8859-1"\n";
    $msg .= "Content-Transfer-Encoding: 7bit\n\n";
    $msg .= $messaggio . "\n\n";

    $msg .= "--{$mime_boundary}\n";
    // Aggiungiamo l'allegato alla mail
    $msg .= "Content-Disposition: attachment;\n";
    $msg .= " filename="{$allegato_name}"\n";
    $msg .= "Content-Transfer-Encoding: base64\n\n";
    $msg .= $data . "\n\n";

    $msg .= "--{$mime_boundary}--\n";
    // Invio la mail con allegato
    if (mail($destinatario, $oggetto, $msg, $headers)) {

    header("Refresh: 5; URL=index.html");
    echo "<br><p align='center'>Mail inviata con successo ! <br> Sarete contattati al più presto ! <br><br> Reindirizzamento....</p>";

    } else { echo "Errore"; }

    } else {

    $headers = "From: " . $mail;
    $msg .= $messaggio . "\n\n";
    // Invio la mail senza allegato
    if (mail($destinatario, $oggetto, $msg, $headers)) {

    header("Refresh: 5; URL=index.html");  
    echo "<br><p align='center'>Mail inviata con successo ! <br> Sarete contattati al più presto ! <br><br> Reindirizzamento....</p>";  
    

    } else { echo "Errore"; }

    }[/PHP]