Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    problema form invio mail con allegato

    ciao a tutti,
    premetto che di php so poco e niente.. ho bisogno di inserire sul mio sito un form php per invio mail con allegato..ne ho trovato uno già pronto in rete, l'ho modificato secondo le mie esigenze però su un server funziona..sul server del mio cliente no.. non so come mai, soprattutto perchè non sono pratico di queste cose. le uniche informazioni che sono riuscito ad avere è che entrambi i server sono Linux, e su quello del mio cliente è attiva la funzione sendmail. riporto qui sotto i due files:

    Codice PHP:
    <form action="invioMail.php" method="POST" enctype="multipart/form-data">
    <
    input type="hidden" name="destinatario" value="miamail">
    <
    table border="0">
    <
    tr>
      <
    td>Tua Mail:</td>
      <
    td><input type="text" name="mittente" value="" /></td>
    </
    tr>
    <
    tr>
    <
    tr>
      <
    td>Scegli Selezione</td>
      <
    td>
      <
    select name="selezione">
      <
    option value="..">opzione1</option>
      <
    option value="..">opzione2</option>
      <
    option value="..">opzione3</option>
      </
    select>
      </
    td>
      
    </
    tr>
    <
    tr>
      <
    td>Oggetto:</td>
      <
    td><input type="text" name="oggetto" value="" /></td>
    </
    tr>
    <
    tr>
      <
    td>Messaggio:</td>
      <
    td><textarea cols="20" rows="4" name="messaggio"></textarea></td>
      </
    tr>
    <
    tr>
      <
    td>Allega Curriculum:</td>
      <
    td><input type="file" name="allegato" /></td>
    </
    tr>
    <
    tr>
      <
    td colspan="2"><input type="submit" value="Invia" /></td>
    </
    tr>
    </
    table>
    </
    form
    file invioMail.php

    Codice PHP:
    <?php
    // Recupero il valore dei campi del form
    $destinatario $_POST['destinatario'];
    $mittente $_POST['mittente'];
    $selezione $_POST['selezione'];
    $oggetto $_POST['oggetto'];
    $messaggio $_POST['messaggio'];

    // Valorizzo le variabili relative all'allegato
    $allegato $_FILES['allegato']['tmp_name'];
    $allegato_type $_FILES['allegato']['type'];
    $allegato_name $_FILES['allegato']['name'];

    // Creo 2 variabili che riempirò più avanti...
    $headers "From: " $mittente;
    $msg "";

    // Verifico se il file è stato caricato correttamente via HTTP
    // In caso affermativo proseguo nel lavoro...
    if (is_uploaded_file($allegato))
    {
      
    // Apro e leggo il file allegato
      
    $file fopen($allegato,'rb');
      
    $data fread($filefilesize($allegato));
      
    fclose($file);

      
    // Adatto il file al formato MIME base64 usando base64_encode
      
    $data chunk_split(base64_encode($data));

      
    // Genero il "separatore"
      // Serve per dividere, appunto, le varie parti del messaggio.
      // Nel nostro caso separerà la parte testuale dall'allegato
      
    $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";

      
    // Metto il separatore
      
    $msg .= "--{$mime_boundary}\n";

      
    // Questa è la 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 .= $selezione "\n\n";
        
        
      
    // Metto il separatore
      
    $msg .= "--{$mime_boundary}\n";

      
    // Aggiungo l'allegato al messaggio
      
    $msg .= "Content-Disposition: attachment;\n";
      
    $msg .= " filename=\"{$allegato_name}\"\n";
      
    $msg .= "Content-Transfer-Encoding: base64\n\n";
      
    $msg .= $data "\n\n";

      
    // chiudo con il separatore
      
    $msg .= "--{$mime_boundary}--\n";
    }
    else
    {
      
    $msg $messaggio;
    }

    // Invio la mail
    if (mail($destinatario$oggetto$msg$headers))
    {
      echo 
    "

    Mail inviata con successo!</p>"
    ;
    }else{
      echo 
    "

    Errore!</p>"
    ;
    }
    ?>

  2. #2
    nessuno sa indicarmi dove intervenire? grazie...

  3. #3
    ho provato anche su altri form che funzionano..ma su questo server del cliente niente. come mai? che parametro devo verificare, che funzione devo far attivare, proprio non ho idea...

  4. #4
    il cliente mi ha fatto sapere che non era attivo sul server il SendMail, ora l'ha attivato lasciando le configurazioni di Default ma comunque non funziona il form...qualcuno sa aiutarmi?grazi

  5. #5
    il cliente mi chiede questo:

    forse conviene che vi fornisco io un indirizzo per autenticarvi sul nostro mail server?
    ma cosa significa? per favore qualcuno mi aiuta?

  6. #6
    Sempre il cliente mi dice che potrebbe crearmi una mail ad hoc per permettermi l'autenticazione smpt..ma nn ho idea di cosa significhi

  7. #7
    Ho fatto un passo in avanti.. Ora invio la mail tramite configurazioe smtp, però ora l'allegato non arriva.

    file invioMail.php
    Codice PHP:
      <?php
        
    require("class.phpmailer.php");
        include(
    'SMTPconfig.php');
    include(
    'SMTPClass.php');
    if(
    $_SERVER["REQUEST_METHOD"] == "GET")
    {
    // Recupero il valore dei campi del form
    $destinatario $_GET['destinatario'];
    $mittente $_GET['mittente'];
    $selezione $_GET['selezione'];
    $oggetto $_GET['oggetto'];
    $messaggio $_GET['messaggio'];

    // Valorizzo le variabili relative all'allegato
    $allegato $_FILES['allegato']['tmp_name'];
    $allegato_type $_FILES['allegato']['type'];
    $allegato_name $_FILES['allegato']['name'];

    // Creo 2 variabili che riempirò più avanti...
    $headers "From: " $mittente;
    $msg "";

    // Verifico se il file è stato caricato correttamente via HTTP
    // In caso affermativo proseguo nel lavoro...
    if (is_uploaded_file($allegato))
    {
      
    // Apro e leggo il file allegato
      
    $file fopen($allegato,'rb');
      
    $data fread($filefilesize($allegato));
      
    fclose($file);

      
    // Adatto il file al formato MIME base64 usando base64_encode
      
    $data chunk_split(base64_encode($data));

      
    // Genero il "separatore"
      // Serve per dividere, appunto, le varie parti del messaggio.
      // Nel nostro caso separerà la parte testuale dall'allegato
      
    $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";

      
    // Metto il separatore
      
    $msg .= "--{$mime_boundary}\n";

      
    // Questa è la 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 .= $selezione "\n\n";
         
        
      
    // Metto il separatore
      
    $msg .= "--{$mime_boundary}\n";

      
    // Aggiungo l'allegato al messaggio
      
    $msg .= "Content-Disposition: attachment;\n";
      
    $msg .= " filename=\"{$allegato_name}\"\n";
      
    $msg .= "Content-Transfer-Encoding: base64\n\n";
      
    $msg .= $data "\n\n";
      

      
    // chiudo con il separatore
      
    $msg .= "--{$mime_boundary}--\n";
    }
    else
    {
    $msg .= $messaggio "\n\n";
      
    $msg .= $selezione "\n\n";

    }



    $SMTPMail = new SMTPClient ($SmtpServer$SmtpPort$SmtpUser$SmtpPass$mittente,$destinatario$oggetto$msg$headers);
    $SMTPChat $SMTPMail->SendMail();
    echo 
    "<h2>Grazie per averci contattato!</h2>";
      echo 
    "

    Mail inviata con successo</p>"
    ;
    }else{
      echo 
    "

    Errore!</p>"
    ;
    }
    ?>
    file form.html

    Codice PHP:
    <form action="invioMail.php" method="GET">
    <
    input type="hidden" name="destinatario" value="">
    <
    table border="0">
    <
    tr>
      <
    td>Tua Mail:</td>
      <
    td><input type="text" name="mittente" value="" /></td>
    </
    tr>
    <
    tr>
    <
    tr>
      <
    td>Scegli Selezione</td>
      <
    td>
      <
    select name="selezione">
      <
    option value="scelta1">scelta1</option>
      <
    option value="scelta2">scelta2</option>
      <
    option value="scelta3">scelta3</option>
      </
    select>
      </
    td>
      
    </
    tr>
    <
    tr>
      <
    td>Oggetto:</td>
      <
    td><input type="text" name="oggetto" value="" /></td>
    </
    tr>
    <
    tr>
      <
    td>Messaggio:</td>
      <
    td><textarea cols="20" rows="4" name="messaggio"></textarea></td>
      </
    tr>
    <
    tr>
      <
    td>Allega Curriculum:</td>
      <
    td><input type="file" name="allegato" /></td>
    </
    tr>
    <
    tr>
      <
    td colspan="2"><input type="submit" value="Invia" /></td>
    </
    tr>
    </
    table>
    </
    form
    Come mai secondo voi l'allegato non arriva?

  8. #8
    Se usi phpmailer c'è il metodo AddAttachment($percorso_file)....dai un occhiata all'elenco dei metodi e ai tutorial di phpmailer:

    Tutorial (ma cercando su google ne trovi una marea): http://phpmailer.worxware.com/index.php?pg=tutorial

    Elenco dei metodi: http://phpmailer.worxware.com/index.php?pg=methods

    Ciao

  9. #9
    ciao grazie,
    si avevo visto in giro PHPmailer, il punto è che dovrei riscrivere tutto il codice e non lo so se ne sono capace non conosco PHP in maniera tale da riuscire a farlo, per questo ho cercato in giro uno script pronto. Quindi l'allegato funziona solo con phpMailer?

  10. #10
    no funziona anche con la funzione mail(), però se hai da fare un'autenticazione smtp phpmailer è ottimo (anche perchè mail() non permette di specificare l'host smtp)...guarda se hai pazienza di aspettare stasera che finisco lavoro provo a postare un esempio di funzione che usa phpmailer (ho i codici a casa)...l'unica cosa che non avevo usato è stato l'allegato però per il resto c'è e non sono molte righe di codice. Comunque non è difficile...trovi un sacco di documentazione su internet e alcuni tutorial sono fatti molto bene.

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.