Creazione file word e invio come allegato mail

di il
6 risposte

Creazione file word e invio come allegato mail

Salve a tutti.
Ho realizzato uno script che genera automaticamente un file word, prendendo alcuni dati in esso contenuti da un form compilato dall'utente.
Per farlo ho usato il metodo:
<?php
header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment;Filename=Richiesta iscrizione di ".$nome." ".$cognome.".doc"); 
echo "<html>";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">";
echo "<head>";
...
echo "</head>";
echo "<body>";
...
echo "</body>";
echo "</html>";
?>
(So che non è proprio il modo perfetto per realizzare una cosa del genere ma mi accontento). Comunque, fin qui tutto bene, nel senso che il file doc viene creato (anche con la formattazione data dai css) e scaricato tramite browser.
La domanda è:
Come posso fare a "trasformare" questo file creato in un allegato da inviare tramite mail (sempre in php, ovviamente) invece di farlo scaricare?

Grazie a tutti quelli che mi vorranno dare una mano!

6 Risposte

  • Re: Creazione file word e invio come allegato mail

    Ciao!

    devi salvare il conenuto dentro a un file che la tua applicazione crea sul server.
    guarda questa libreria: https://github.com/PHPOffice/PHPWor

    poi invii l'email mandando impostando il path del file come allegato.
    per inviare email guarda alla libreria phpmailer.
  • Re: Creazione file word e invio come allegato mail

    Da quel che ho capito con PhpMailer non si deve modificare il php.ini affinchè funzioni, giusto? Sto provando a seguire il tuo consiglio ma mi dice: ": Could not instantiate mail function."... ovvero?
  • Re: Creazione file word e invio come allegato mail

    Piccolo aggiornamento: ho provato a mettere lo script online, su un mio vecchio sito (hosting Aruba, se può essere utile). Eseguendo lo script non da errore, la mail viene inviata, ma senza allegato! . Perchè fa così secondo voi? vi posto il codice:
    
    <?php
    
    session_start();
    
    $iscrizione = "Testo del file doc";
    $isc = fopen("Richiesta iscrizione.doc","w+");
    fwrite ($isc, $iscrizione);
    fclose($isc);
    
    
    require "PHPMailerAutoload.php";
    $mail = new PHPMailer;
    
    $mail->From = 'mail@invio.it';
    $mail->addAddress("mail@ricevo.it");
    
    $mail->Subject = "Email con allegato!";
    
    $messaggio = "<h1>Hei!</h1><p>Questo è il testo del messaggio!</p>";
    $mail->Body = $messaggio;
    
    
    $mail->isHTML(true);
    
    $mail->addAttachment($isc);
    
    if (!$mail->send()) {
       echo 'Impossibile inviare il messaggio con allegato!.';
       echo 'Mailer Error: ' . $mail->ErrorInfo;
       exit;
    }
    ?>
    
    
    
  • Re: Creazione file word e invio come allegato mail

    Prova a piazzare qualche controllo.
    tipo un file_exists per verificare che il file esista effettivamente sul server!
  • Re: Creazione file word e invio come allegato mail

    ... il file esiste e i controlli me lo confermano, di fatto non lo allega... il meglio che son riuscito a fare è stato aggiungere un allegato "fantasma" nel senso che nell'anteprima della mail c'era il simbolo dell'allegato ma aprendola magicamente c'era solo la parte testuale.
    In ogni caso ho risolto inviando una mail in formato html e al posto dell'allegato mettendo un link all'interno del messaggio.
  • Re: Creazione file word e invio come allegato mail

    Hai provato ad inviare l'attachment così?
    $mail->AddAttachment(percorso/nome_file_con_estensione);}

    il percorso è quello del server che trovi così $_SERVER['SCRIPT_FILENAME']
    poi con un substr($_SERVER['SCRIPT_FILENAME'], 0, -XXX) lo sistemi togliendo quello che non ti serve e per raggiungere una eventuale sottodirectory e il file da mettere in attachment
Devi accedere o registrarti per scrivere nel forum
6 risposte