Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Correggiamo un vecchio script: email con allegato inviata da lista excel

    Ciao a tutti,
    anni fa (ero giovane ) scrissi uno script per invare email html con allegato pescando nome e indirizzo mail da una lista excel.

    Ha sempre funzionanto fino all'anno scorso... poi stop il server restituisce errori a tutte le righe ecc ecc credo che tutto stia nel fatto che lo script sarà stato sviluppato con php < 3/4 e adesso i server sono tutti aggiornati con php > 5

    Visto che sono arrugginito di programmazione mi potete aiutare a rifar funzionare lo script oppure me ne indicate un'altro di simile?

    si seguito lo script:

    Per farlo funzionare avete bisogno delle seguenti librerie:
    - phpexcelreader
    - phpmailer

    Ecco il codice per il file sendmail.php

    <?php

    require_once 'Excel/reader.php';
    require_once 'class.phpmailer.php';

    // ExcelFile($filename, $encoding);
    $data = new Spreadsheet_Excel_Reader();
    $mail = new PHPMailer();

    // Set output Encoding.
    $data->setOutputEncoding('CP1251');


    $data->read('test.xls');
    error_reporting(E_ALL ^ E_NOTICE);


    // RENDIAMO LO SCRIPT COMPATIBILE CON LE VERSIONI DI PHP < 4.1.0

    if(!isset($_POST)) $_POST = $HTTP_POST_VARS;
    if(!isset($_FILES)) $_FILES = $HTTP_POST_FILES;

    // RIPULIAMO I VARI CAMPI DEL MODULO
    $nomefrom = trim($_POST["nomefrom"]);
    $from = trim($_POST["from"]);
    $oggetto = trim($_POST["oggetto"]);
    $Contenuto = trim($_POST["Contenuto"]);
    $attach = $_FILES["allegato"]["tmp_name"];
    $file_name = $_FILES["allegato"]["name"];
    $file_type = $_FILES["allegato"]["type"];
    $file_size = $_FILES["allegato"]["size"];

    for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) {
    $nome= "".$data->sheets[0]['cells'][$i][1]."";
    $email= "".$data->sheets[0]['cells'][$i][2]."";
    if ($email<> ""){

    // prepari il messaggio che vuoi inviare
    $mess = "<html>";
    $mess .= "<head>";
    // puoi allegare anche un style css, basta che passi come url quello assoluto
    $mess .= "</head>";
    $mess .= "<body>";
    $mess .= "<div class=\"unaclassedelfogliodistile\">";
    $mess .= "Spett.le $nome
    " ;
    $mess .= $Contenuto;
    $mess .= "</div>";
    $mess .= "</body>";
    $mess .= "</html>";


    $mail->From = $from; // indirizzo da cui proviene la mail
    $mail->FromName = $nomefrom;
    $mail->AddAddress($email, $nome);

    $mail->WordWrap = 50; // set word wrap to 50 characters
    $mail->IsHTML(true); // set email format to HTML
    $mail->Timeout=60;

    $mail->Subject = $oggetto;
    $mail->Body = $mess; // $mess conterrà il messaggio html
    $mail->AltBody = "Non puoi vedere il contenuto della mail in quanto il tuo
    client non lo consente.";
    $mail->AddAttachment($attach, $file_name); // optional name

    if(!$mail->Send())
    {
    echo "Mailer Error: " . $mail->ErrorInfo;
    exit;
    }
    else
    {
    echo " Invio corretto $email
    ";
    }
    // Clear all addresses and attachments for next loop
    $mail->ClearAddresses();
    $mail->ClearAttachments();
    }
    }

    ?>


    e il codice per il form potrebbe essere:

    <form action="sendmail.php" enctype="multipart/form-data" method="POST">
    <table cellpadding="0" cellspacing="0">
    <tr>
    <td>Nome di chi Spedisce </td>
    <td><input name="nomefrom" type="text" id="nomefrom" size="40"></td>
    </tr>
    <tr>
    <td>Email di chi Spedisce : </td>
    <td>


    <input name="from" type="text" id="from" size="40">
    </p>
    </td>
    </tr>
    <tr>
    <td>Oggetto:</td>
    <td><input name="oggetto" type="text" id="oggetto" size="40"></td>
    </tr>
    <tr>
    <td>Allegato:</td><td><input type="file" name="allegato" size="40"></td>
    </tr>
    <tr>
    <td valign="top">Contenuto:</td>
    <td>

    Spett.le Nome Azienda (è già inserito in automatico)
    </p>



    <textarea name="Contenuto" rows="15" cols="50"></textarea>
    </p></td>
    </tr>
    <tr>
    <td height="30" valign="bottom" colspan="2" align="center"><input
    type="submit" value="Invia la mail">
    </tr>
    </table>
    </form>

    ultima cosa il file excel dovrebbe essere strutturato così:
    Azienda | Mail |
    nome1 | m@m.it |
    nome2 | n@n.it |

  2. #2
    che errori darebbe?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    allego print screen... e poi si impalla tutto...
    in realtà fin che non si è impallato il pc facendo lo scroll ho visto che il numero finale 27 continua ad aumentare...
    Immagini allegate Immagini allegate
    http://www.automationrestore.it

  4. #4
    hai provato ad usare una versione di phpexcelreader aggiornata (controllando la compatibilità con la versione di php che usi)?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    fatto... scaricato e installato ultima verisione...

    l'errore adesso è questo:
    Warning: main(Spreadsheet/Excel/Reader/OLERead.php) [function.main]: failed to open stream: No such file or directory in /home/solu1968/public_html/cv/Excel/reader.php on line 31

    Fatal error: main() [function.require]: Failed opening required 'Spreadsheet/Excel/Reader/OLERead.php' (include_path='/usr/local/php4/lib/php:.:/usr/lib/php:/usr/local/lib/php') in /home/solu1968/public_html/cv/Excel/reader.php on line 31
    http://www.automationrestore.it

  6. #6
    leggi il manuale del reader per configurare correttamente gli include... come puoi leggere, non sà dove si trovi il file. Sicuramente te lo spiegano come fare
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    Risolto!!
    Scaricato la libreria nuova della phpExcelReader ...
    Poi non andava perchè dentro a sta libreria c'era un include che puntava a un file sbagliato.

    Corretto e wooow tutto funzia!
    Grazie a tutti!
    Ciaoo
    http://www.automationrestore.it

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.