Visualizzazione risultati 1 fino 23 di 23

Discussione: Invio Mail con allegato

  1. #1
    Guest

    Predefinito Invio Mail con allegato

    Salve a tutti ragazzi!
    sono nuovo qui, ho creato un mio spazietto poco fa per testare degli script in php..
    Premetto che ho iniziato da poco a studiarlo, e.. diciamo che mi sto smarrendo!

    Devo provare uno script che ho trovato in giro per l'invio di una mail con allegato.. ma non so da dove iniziare!!

    qualche anima pia che possa darmi una mano??

  2. #2
    Guest

    Predefinito

    Citazione Originalmente inviato da provascript Visualizza messaggio
    Salve a tutti ragazzi!
    sono nuovo qui, ho creato un mio spazietto poco fa per testare degli script in php..
    Premetto che ho iniziato da poco a studiarlo, e.. diciamo che mi sto smarrendo!

    Devo provare uno script che ho trovato in giro per l'invio di una mail con allegato.. ma non so da dove iniziare!!

    qualche anima pia che possa darmi una mano??
    intanto guarda se neella cartella dello script c'è un fle readme o qualcosa del genere e poi inizia copiando i file nel tuo sito.
    se poi magari ci dici anche qual'è lo script...

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da cmsmania Visualizza messaggio
    intanto guarda se neella cartella dello script c'è un fle readme o qualcosa del genere e poi inizia copiando i file nel tuo sito.
    se poi magari ci dici anche qual'è lo script...
    Codice PHP:
    <?php
    // Recuperiamo i valori dal form e aggiungiamo la nostra email dove ricevere il file allegato con la mail

    $to = "[mio indirizzo]";

    $mail = $_POST['mail'];

    $oggetto = $_POST['oggetto'];

    $testomessaggio = $_POST['testomessaggio'];

    // Creiamo le variabili per il file attachment

    $attachment = $_FILES['attachment']['tmp_name'];

    $attachment_type = $_FILES['attachment']['type'];

    $attachment_name = $_FILES['attachment']['name'];

    $headers = "From: " . $to;

    // Verifichiamo se è stato eseguito l'upload del file

    if (is_uploaded_file($attachment))

    {

    // usiamo la funzione fopen e fread per aprire e leggere il file e poi chiudiamo con fclose

    $file = fopen($attachment,'rb');

    $data = fread($file, filesize($attachment));

    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 deve divir

    dere la parte testuale del messaggio dal file stesso altrimenti riceverete una serie illeggibili di caratteri

    */

    $func_rand = md5(time());

    $mime_divisor = "==Multipart_divisor_x{$func_rand}x";

    // Aggiungo le intestazioni necessarie per l’attachment

    $headers .= "\nMIME-Version: 1.0\n";

    $headers .= "Content-Type: multipart/mixed;\n";

    $headers .= " divisor=\"{$mime_divisor}\"";

    // Definisco il tipo di messaggio (MIME/multi-part)

    $body .= "This is a multi-part message in MIME format.\n\n";

    // Mettiamo il separatore

    $body .= "–{$mime_divisor}\n";

    // Questa è la parte “testuale” del messaggio

    $body .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";

    $body .= "Content-Transfer-Encoding: 7bit\n\n";

    $body .= "From :" . $mail . "\n\n";

    $body .= $messaggio . "\n\n";

    // Ancora il separatore alla fine del contenuto testuale della mail

    $body .= "–{$mime_divisor}\n";

    // Adesso aggiungiamo l’allegato alla mail

    $body .= "Content-Disposition: attachment;\n";

    $body .= " filename=\"{$attachment_name}\"\n";

    $body .= "Content-Transfer-Encoding: base64\n\n";

    $body .= $data . "\n\n";

    // chiudo con il separatore

    $body .= "–{$mime_divisor}–\n";

    }

    else

    {

    $body = $testomessaggio;

    }

    // Invio la mail

    if (mail($to, $oggetto, $body, $headers))

    {

    echo
    "<em>Mail e allegato inviati correttamenti</em>";

    }else{

    echo
    "<em>Ci sono problemi, verifica il codice php</em>";

    }

    ?>
    Questo è l'ultimo script che ho trovato.. ne ho trovati diversi, ma nessun read me.. giusto qualche spiegazione, che credo d'aver seguito!
    Qui per esempio da quel che ho capito va modificato solo l'indirizzo email di destinazione nella variabile $to.. l'ho testato sul sito, la mail la manda, ma niente allegato.. che ci sia un problema di permessi di scrittura dei file temporanei??

  4. #4
    Guest

    Predefinito

    non ti so direperò controlla due cosa:
    -l'utilizzo della variabile ftp su altervista non funziona
    -la grandezza dell'allegato quant'è?

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da cmsmania Visualizza messaggio
    non ti so direperò controlla due cosa:
    -l'utilizzo della variabile ftp su altervista non funziona
    -la grandezza dell'allegato quant'è?
    Eh.. ho provato ad allegare un txt di 1 kb! e ho impostato la dimensione massima a 5 mega dalle impostazioni.. per quanto riguarda la variabile di cui parli.. puoi spiegarti meglio per favore? ripeto.. so molto poco :(

  6. #6
    Guest

    Predefinito

    intendo che l'uso della variabile ftp() su altervista è disattivata e quindi se usi quella variabile per caricare file non funziona

  7. #7
    Guest

    Predefinito

    ma non mi pare che sia usata in quel codice che t'ho postato no? tu ne conosci qualcuno che possa fare al caso mio??

  8. #8
    Guest

    Predefinito

    no non ne conosco però prova a guardare qui: http://www.google.it/search?q=email+...ient=firefox-a

  9. #9
    Guest

    Predefinito

    eh.. google è già il mio migliore amico! ne ho provati un paio.. ma nulla.. vorrà dire che cercherò ancora!
    grazie mille amico!

  10. #10
    Guest

    Predefinito

    Per prima cosa ti dice che la sezione non è quella giusta.
    Come seconda cosa avevo trovato un pacchetto con uno script che funzionava alla perfezione, che faceva al caso tuo, lo cerco poi ti do il link.

  11. #11
    Guest

    Predefinito

    Non ti manda nessun allegato, perchè manca il form!!!
    Stiamo facendo una grande confunsione...
    Eccoti il form per l'invio dell'email, crea un file invia.php e inserisci questo:
    Codice PHP:
    <?php
    if(isset($_POST["submit"])) {

    // Recuperiamo i valori dal form e aggiungiamo la nostra email dove ricevere il file allegato con la mail

    $to = "<redacted>";

    $mail = $_POST['mail'];

    $oggetto = $_POST['oggetto'];

    $testomessaggio = $_POST['testomessaggio'];

    // Creiamo le variabili per il file attachment

    $attachment = $_FILES['attachment']['tmp_name'];

    $attachment_type = $_FILES['attachment']['type'];

    $attachment_name = $_FILES['attachment']['name'];

    $headers = "From: " . $to;

    // Verifichiamo se è stato eseguito l'upload del file

    if (is_uploaded_file($attachment))

    {

    // usiamo la funzione fopen e fread per aprire e leggere il file e poi chiudiamo con fclose

    $file = fopen($attachment,'rb');

    $data = fread($file, filesize($attachment));

    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 deve divir

    dere la parte testuale del messaggio dal file stesso altrimenti riceverete una serie illeggibili di caratteri

    */

    $func_rand = md5(time());

    $mime_divisor = "==Multipart_divisor_x{$func_rand}x";

    // Aggiungo le intestazioni necessarie per l’attachment

    $headers .= "\nMIME-Version: 1.0\n";

    $headers .= "Content-Type: multipart/mixed;\n";

    $headers .= " divisor=\"{$mime_divisor}\"";

    // Definisco il tipo di messaggio (MIME/multi-part)

    $body .= "This is a multi-part message in MIME format.\n\n";

    // Mettiamo il separatore

    $body .= "–{$mime_divisor}\n";

    // Questa è la parte “testuale” del messaggio

    $body .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";

    $body .= "Content-Transfer-Encoding: 7bit\n\n";

    $body .= "From :" . $mail . "\n\n";

    $body .= $messaggio . "\n\n";

    // Ancora il separatore alla fine del contenuto testuale della mail

    $body .= "–{$mime_divisor}\n";

    // Adesso aggiungiamo l’allegato alla mail

    $body .= "Content-Disposition: attachment;\n";

    $body .= " filename=\"{$attachment_name}\"\n";

    $body .= "Content-Transfer-Encoding: base64\n\n";

    $body .= $data . "\n\n";

    // chiudo con il separatore

    $body .= "–{$mime_divisor}–\n";

    }

    else

    {

    $body = $testomessaggio;

    }

    // Invio la mail

    if (mail($to, $oggetto, $body, $headers))

    {

    echo
    "<em>Mail e allegato inviati correttamenti</em>";

    }else{

    echo
    "<em>Ci sono problemi, verifica il codice php</em>";

    }

    }
    ?>
    <form action="" method="post" enctype="multipart/form-data">
    <table>
    <tr>
    <td>Email destinatario:</td><td><input type="text" name="mail" /></td>
    </tr>
    <tr>
    <td>Oggetto email:</td><td><input type="text" name="oggetto" /></td>
    </tr>
    <tr>
    <td>Testo messaggio:</td><td><input type="text" name="testomessaggio" /></td>
    </tr>
    <tr>
    <td>Allega File:</td><td><input type="file" name="attachment" /></tr>
    </tr>
    <tr>
    <td><input type="submit" name="submit" value="Invia email + Allegato" /></td>
    </tr>
    </table>
    </form>
    P.S. Il file non verrà mai allegato, perchè fopen() è limitata ad aprire file interni al server... Quindi devi utilizzare le cURL
    Ultima modifica di javascripter : 04-08-2017 alle ore 11.25.43

  12. #12
    Guest

    Predefinito

    Citazione Originalmente inviato da nokiagames Visualizza messaggio
    Non ti manda nessun allegato, perchè manca il form!!!
    Stiamo facendo una grande confunsione...
    Eccoti il form per l'invio dell'email, crea un file invia.php e inserisci questo:
    Codice PHP:
    <?php
    if(isset($_POST["submit"])) {

    // Recuperiamo i valori dal form e aggiungiamo la nostra email dove ricevere il file allegato con la mail

    $to = "<redacted>";

    $mail = $_POST['mail'];

    $oggetto = $_POST['oggetto'];

    $testomessaggio = $_POST['testomessaggio'];

    // Creiamo le variabili per il file attachment

    $attachment = $_FILES['attachment']['tmp_name'];

    $attachment_type = $_FILES['attachment']['type'];

    $attachment_name = $_FILES['attachment']['name'];

    $headers = "From: " . $to;

    // Verifichiamo se è stato eseguito l'upload del file

    if (is_uploaded_file($attachment))

    {

    // usiamo la funzione fopen e fread per aprire e leggere il file e poi chiudiamo con fclose

    $file = fopen($attachment,'rb');

    $data = fread($file, filesize($attachment));

    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 deve divir

    dere la parte testuale del messaggio dal file stesso altrimenti riceverete una serie illeggibili di caratteri

    */

    $func_rand = md5(time());

    $mime_divisor = "==Multipart_divisor_x{$func_rand}x";

    // Aggiungo le intestazioni necessarie per l’attachment

    $headers .= "\nMIME-Version: 1.0\n";

    $headers .= "Content-Type: multipart/mixed;\n";

    $headers .= " divisor=\"{$mime_divisor}\"";

    // Definisco il tipo di messaggio (MIME/multi-part)

    $body .= "This is a multi-part message in MIME format.\n\n";

    // Mettiamo il separatore

    $body .= "–{$mime_divisor}\n";

    // Questa è la parte “testuale” del messaggio

    $body .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";

    $body .= "Content-Transfer-Encoding: 7bit\n\n";

    $body .= "From :" . $mail . "\n\n";

    $body .= $messaggio . "\n\n";

    // Ancora il separatore alla fine del contenuto testuale della mail

    $body .= "–{$mime_divisor}\n";

    // Adesso aggiungiamo l’allegato alla mail

    $body .= "Content-Disposition: attachment;\n";

    $body .= " filename=\"{$attachment_name}\"\n";

    $body .= "Content-Transfer-Encoding: base64\n\n";

    $body .= $data . "\n\n";

    // chiudo con il separatore

    $body .= "–{$mime_divisor}–\n";

    }

    else

    {

    $body = $testomessaggio;

    }

    // Invio la mail

    if (mail($to, $oggetto, $body, $headers))

    {

    echo
    "<em>Mail e allegato inviati correttamenti</em>";

    }else{

    echo
    "<em>Ci sono problemi, verifica il codice php</em>";

    }

    }
    ?>
    <form action="" method="post" enctype="multipart/form-data">
    <table>
    <tr>
    <td>Email destinatario:</td><td><input type="text" name="mail" /></td>
    </tr>
    <tr>
    <td>Oggetto email:</td><td><input type="text" name="oggetto" /></td>
    </tr>
    <tr>
    <td>Testo messaggio:</td><td><input type="text" name="testomessaggio" /></td>
    </tr>
    <tr>
    <td>Allega File:</td><td><input type="file" name="attachment" /></tr>
    </tr>
    <tr>
    <td><input type="submit" name="submit" value="Invia email + Allegato" /></td>
    </tr>
    </table>
    </form>
    P.S. Il file non verrà mai allegato, perchè fopen() è limitata ad aprire file interni al server... Quindi devi utilizzare le cURL
    No aspetta, il form l'ho fatto ovvio, l'ho messo in una pagina html a parte.. però non andava comunque!
    Fammi capire una cosa.. con questo codice va o no? che url devo usare?

    Ps. Grazie mille a tutti ragazzi..
    Ultima modifica di javascripter : 04-08-2017 alle ore 11.23.25

  13. #13
    Guest

    Predefinito

    Citazione Originalmente inviato da provascript Visualizza messaggio
    No aspetta, il form l'ho fatto ovvio, l'ho messo in una pagina html a parte.. però non andava comunque!
    Fammi capire una cosa.. con questo codice va o no? che url devo usare?

    Ps. Grazie mille a tutti ragazzi..
    devi usare la funzione cURL() al posto di fopen()

  14. #14
    Guest

    Predefinito

    Fatal error: Call to undefined function cURL() in /membri/provascript/php5/invia.php on line 32...
    ho sostituito fopen con cURL.. ma nada..

    scusate il mio essere capra!

    EDIT: ragaaa ho trovato uno script che pare funzionare!!
    ho fatto solo una prova veloce ed è andata.. poi lo studierò bene e vedrò per differenti dimensioni del file.. lo script è qui: http://forum.it.altervista.org/php-m...tml#post572845

    grazie ancora a tutti!
    Ultima modifica di debug : 26-05-2009 alle ore 14.39.22

  15. #15
    Guest

    Predefinito Form mail con allegato

    Salve a tutti, è evidente che sono nuovo del forum, quindi non so di preciso se se ne è già parlato della

    questione che vi sto porgendo, comunque vengo al punto;
    Ho un Sito con form mail strutturato per l'invio di email con allegato, con form e relativo php:

    questo é il form:
    Codice HTML:
    <form action="form.php" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="destinatario" value="info@ilmiosito.it">
    <table  style="border:0;color:white;float:left">
    <tr>	
      <td>Tua Mail:</td>
      <td><input type="text" name="mittente" value="" style="width: 300px" /><br><br></td>
    </tr>
    <tr>
      <td>Oggetto:</td>
      <td><input type="text" name="oggetto" value="" style="width: 300px" /><br><br></td>
    </tr>
    <tr>
      <td>Messaggio:</td>
      <td style="width:300px"><textarea cols="20" rows="4" name="testomessaggio" 
    
    style="width:300px;overflow:hidden;height:130px; max-width:300px;max-height:130px"></textarea><br>
      <br></td>
      </tr>
    <tr>
      <td>Allega file:</td>
      <td style="width:305px"><input type="file" name="attachment" style="width:305px;" class="file_1"/><br>
      <br><br></td>
    </tr>
    <tr>
      <td colspan="2"><input type="image"  value="submit"  src="images/invia2.png" style="float:right" /></td>
    </tr>
    </table>
    </form>


    questo è il php:

    Codice PHP:
    <?php
    // Recupero il valore dei campi del form
    $destinatario = $_POST['destinatario'];
    $mittente = $_POST['mittente'];
    $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($file, filesize($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";

    // 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
    "<p>Mail inviata con successo!</p>";
    }else{
    echo
    "<p>Errore!</p>";
    }
    ?>
    Il punto è che funziona perfettamente, arrivano tutte le parti compreso l'allegato, con il classico "Mail inviata

    con successo!" ma il problema è che non da "Errore" se non si compilano i campi, e non si allega nulla;

    in poche parole se si clicca su "Invia" senza compilare e allegare nulla, da sempre "Mail inviata con successo!",

    e ovviamente non invia nulla.

    Se si compilano i campi ma non si allega nulla, da sempre "Mail inviata con successo!" e arriva l'email, con i

    campi, ovviamente senza allegato.

    Se si compila solo l'Oggetto e il Messaggio, senza compilare il campo "Email", da sempre "Mail inviata con

    successo!" e arriva l'email, con il mittente sconosciuto e ovviamente senza allegato.

    Quello che vorrei e la pagina "Errore" se non si compilano almeno i campi testuali.

    Sicuramente manca qualcosa al php, ma cosa?

    Qualcuno saprà aiutarmi?

    Un Grazie anticipato è cosa buona e giusta!

  16. #16
    Guest

    Predefinito

    ciao a tutti.

    ho provato a creare una email con allegato ma non ci sono riuscito.

    io carico il file con queste istruzioni (scopiazzate altrove):

    move_uploaded_file($_FILES['userfile']['tmp_name'], $_FILES['userfile']['name']);
    $file=$_FILES['userfile']['name'];

    il php è chiamato da un form html che contiene:
    <INPUT type="file" SIZE="50" name="userfile" >

    ho provato ad adattare il codice che proponete sopra, ma non mi è chiaro cosa devo mettere al posto di:

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

    ho provato con
    $allegato = $_FILES['userfile']['tmp_name'];
    $allegato_type = $_FILES['userfile']['type'];
    $allegato_name = $_FILES['userfile']['name'];


    ma non mi allega nulla. La email arriva correttamente, ma senza allegato.

    Grazie

  17. #17
    Guest

    Predefinito

    Citazione Originalmente inviato da taverna Visualizza messaggio
    Quello che vorrei e la pagina "Errore" se non si compilano almeno i campi testuali.

    Sicuramente manca qualcosa al php, ma cosa?

    Qualcuno saprà aiutarmi?

    Un Grazie anticipato è cosa buona e giusta!
    da inesperto:
    evidentemente la funzione mail non va in errore se gli passi tutti (o alcuni) parametri vuoti. Creati tu il messaggio di errore controllando che le variabili non siano vuote

  18. #18
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    Salve a tutti,
    non vorrei essere linciato per riaprire un thread vecchio di più di 10 anni, ma non volevo aprirne una nuovo ed ho provato ad integrare la soluzione proposta qui dall'utente Guest sotto ed infatti non funziona perché appunto serve la funzione cURL, come dovrei fare per integrare quindi la possibilità d'invio allegato al mio codice già funzionante?
    Grazie a chi risponderà.

    Codice PHP:
    if ($_REQUEST['invia'] == 'preview'){
    $email = $_REQUEST['email'];
    $from = $_REQUEST['from'];
    $subject = stripslashes($_REQUEST['subject']);
    $testo = stripslashes($_REQUEST['testo']);
    $formato = $_REQUEST['formato'];
    if (
    $formato == 'text') { $testo_vis = htmlentities($testo, ENT_NOQUOTES); }
    else {
    $testo_vis = $testo; $testo = htmlentities($testo, ENT_QUOTES); }
    $testo_vis = ereg_replace("\n", "<br/>", $testo_vis);

    print
    "
    <div align=\"center\">
    <table cellpadding=\"5\">
    <tr>
    <td>
    $testo_vis</td>
    </tr>
    <tr>
    <td>
    <form action=\"index.php\" method=\"post\">
    <input type=\"hidden\" name=\"email\" value=\"
    $email\" />
    <input type=\"hidden\" name=\"from\" value=\"
    $from\" />
    <input type=\"hidden\" name=\"subject\" value=\"
    $subject\" />
    <input type=\"hidden\" name=\"testo\" value=\"
    $testo\" />
    <input type=\"hidden\" name=\"formato\" value=\"
    $formato\" />
    <input type=\"submit\" name=\"invia\" value=\"invia\" />
    </form>
    </td>
    </tr>
    </table>
    </div>
    "
    ;
    }
    elseif (
    $_REQUEST['invia'] == 'invia') { #### SPEDISCE MAIL ####
    $email = $_REQUEST['email'];
    $from = $_REQUEST['from'];
    $subject = stripslashes($_REQUEST['subject']);
    $testo = stripslashes($_REQUEST['testo']);
    $formato = $_REQUEST['formato'];

    $info = "From: $from\n";
    $info .= "Reply-To: $from\n";
    $info .= "X-Priority: 1 (Highest)\n";
    $info .= "MIME-Version: 1.0\r\n";
    if (
    $formato == 'html') {
    $info .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $testo = html_entity_decode($testo, ENT_QUOTES);
    }
    $info .= "X-Mailer: PHP/" . phpversion();

    $ris = mail($email, $subject, $testo, $info);
    if (
    $ris){
    print
    "
    <div align=\"center\">
    <h2>La mail destinata a
    $email &egrave; stata accettata per la spedizione</h2>
    </div>"
    ;
    }
    else {
    print
    "
    <div align=\"center\">
    <h2>La mail destinata a
    $email NON &egrave; stata accettata per la spedizione</h2>
    </div>"
    ;
    }
    print
    "
    <a href=\"index.php\">Indietro</a><br/>"
    ;
    }
    else {
    ## presentazione del form iniziale e dei campi da compilare
    print "
    <div align=\"center\">
    <form action=\"index.php\" method=\"post\" onSubmit=\"javascript:return controllaDati(this);\">
    <table cellpadding=\"5\">
    <tr>
    <td>A:</td>
    <td><input type=\"text\" name=\"email\" size=\"40\" /></td>
    </tr>
    <tr>
    <td>DA:</td>
    <td><input type=\"text\" name=\"from\" size=\"40\" /></td>
    </tr>
    <tr>
    <td>OGGETTO:</td>
    <td><input type=\"text\" name=\"subject\" size=\"40\" /></td>
    <tr>
    <td>TESTO:</td>
    <td><textarea name=\"testo\" cols=\"40\" rows=\"10\" wrap=\"soft\"></textarea>
    </tr>
    <tr>
    <td>FORMATO:</td>
    <td><input type=\"radio\" name=\"formato\" value=\"html\" />HTML &nbsp;&nbsp;&nbsp;<input type=\"radio\" name=\"formato\" value=\"text\" \"checked\" />Testo</td>
    </tr>
    <tr>
    <td colspan=\"2\" valign=\"bottom\" align=\"center\" height=\"30\">
    <input type=\"submit\" name=\"invia\" value=\"preview\">
    </td>
    </tr>
    </table>
    </form>
    </div>
    "
    ;
    }
    Ultima modifica di gutguy2 : 28-03-2020 alle ore 23.26.15 Motivo: formattazione

  19. #19
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,192

    Predefinito

    Citazione Originalmente inviato da gutguy2 Visualizza messaggio
    non vorrei essere linciato per riaprire un thread vecchio di più di 10 anni, ma non volevo aprirne una nuovo
    Per quale motivo non vuoi aprirne uno nuovo?


    Citazione Originalmente inviato da gutguy2 Visualizza messaggio
    ed ho provato ad integrare la soluzione proposta qui dall'utente Guest sotto ed infatti non funziona perché appunto serve la funzione cURL
    Non capisco, come mai dici che serve la funzione cURL? (disponibile su AlterVista sbloccando le connessioni server to server).

    Citazione Originalmente inviato da gutguy2 Visualizza messaggio
    come dovrei fare per integrare quindi la possibilità d'invio allegato al mio codice già funzionante?
    Prima cerca di inviare una semplice email, poi aggiungi di volta in volta elementi fino ad arrivare a spedire una email con allegato. Quel codice in che senso non funziona? Parte l'email senza allegato? Non parte mai?

    Ciao!
    Ultima modifica di alemoppo : 29-03-2020 alle ore 00.05.53

  20. #20
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Per quale motivo non vuoi aprirne uno nuovo?
    Perchè così posso referenziare direttamente qui, ed infatti:


    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Non capisco, come mai dici che serve la funzione cURL?
    perché qualcuno in questa discussione diceva che fopen funzionava solo in locale qui su altervista ed consigliava le curl

    Citazione Originalmente inviato da ;668555
    P.S. Il file non verrà mai allegato, perchè fopen() è limitata ad aprire file interni al server... Quindi devi utilizzare le cURL
    di cui ho pensato io visto che ho provato proprio a fare come dicevi tu:

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    aggiungi di volta in volta elementi fino ad arrivare a spedire una email con allegato.
    ma visto che non riusciva ad allegare nessun file pensavo fosse dovuto al fatto che non ho usato le curl

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Quel codice in che senso non funziona? Parte l'email senza allegato? Non parte mai?
    Arriva a destinazione, con tutti i campi compilati corettamente ma senza allegato, ecco il codice:

    invia.php

    Codice PHP:
    $timestampcorrente=time();
    $dataora=gmdate("d/m/Y H:i:s", $timestampcorrente).' UTC'; //UTC
    $a=$_POST['emaila'];
    $da=$a;
    $oggetto=$dataora;
    $messaggio=$oggetto.'<br>';

    // 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: " . $da;
    $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($file, filesize($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";

    // 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
    //Per verificare che la funzione mail() sia attiva per il proprio sito basta creare uno script semplice php come il seguente, caricarlo nel proprio spazio ed eseguirlo.
    if(mail($a,$oggetto,$messaggio,$headers))
    echo
    'email con oggetto "'.$oggetto.'" inviata correttamente a "'.$a.'"<br>Attendere ... <meta http-equiv="refresh" content="5; url=./index.php">';
    else echo
    'Errore!<br>Attendere ...<meta http-equiv="refresh" content="5; url=./">';
    form

    Codice PHP:
    <form action="invia.php" method="post">
    Destinazione: <input type="text" name="emaila" value="" /><br>
    Allegato: <input type="file" name="allegato" /><br>
    <
    input type="submit" name="submit" value="Submit" />
    </
    form>
    Se volessi usare appunto le curl come dovrei fare?

    Ciao e grazie.
    Ultima modifica di gutguy2 : 30-03-2020 alle ore 22.29.32 Motivo: mancava il codice da me usato

  21. #21
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,192

    Predefinito

    La libreria cURL non ha senso in questo caso: serve per comunicare con server esterni. In questo caso è appunto sufficiente la fopen() anche se ormai si utilizza la file_get_contents().

    Per vedere cosa non va, dovresti effettuare debug del codice, ovvero ad esempio con delle echo verificare i vari valori delle variabili ed il flusso del programma.

    Ciao!

  22. #22
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    intanto grazie per il supporto.
    Il codice cho ho postato contiene un errore

    (if(mail($a,$oggetto,$messaggio,$headers)) deve essere if(mail($a,$oggetto,$msg,$headers))

    cmq facendo delle prove non solo ho notato che l'allegato non appare echando $msg ma if (is_uploaded_file($allegato)) da esito negativo ed infatti il codice da esso trattayto non viene eseguito

  23. #23
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,192

    Predefinito

    Dai un'occhiata questa vecchia discussione, il codice dovrebbe essere ancora funzionante.

    Ciao!

Regole di scrittura

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