ciao, sto cercando di inviare una mail con allegato (che verrà scelto dall'utente) ma non riesco a capire dove sbaglio. La mail viene inviata, l'allegato supera i controlli però alla ricezione non riesco ad aprirlo (come se fosse corrotto).
Premetto che l'invio di allegati in sè funziona (e anche l'invio mail), il problema si verifica solo con gli allegati che vengono caricati dall'utente.
questo è il mio form html
e questo il php che controlla l'allegato e chiama una funzione invia_mail (che funziona, per cui riporto soltanto la creazione dell'allegato)codice:<form action ='mail2.php' method='POST' enctype="multipart/form-data"> <table class='tab1'> <tr><td>Oggetto: </td> <td><input type='text' style='width:600px;height:30px; font-size:24px; 'name='subj'></td> </tr> <tr><td>Messaggio: </td> <td><textarea style='width:600px; height:200px; font-size:24px;' name='msg'></textarea></td> </tr> <tr><td>Carica File</td> <td><input type="file" name="uploadfile" style='width:600px;height:30px;'></td> </tr> </table> <br/><input type='submit' value='Invia!' class='butt'></input> </form>
codice:if ($_FILES['uploadfile']['error'] == 0){ // upload ok // upload terminato, stampo alcune info sul file echo "Upload terminato con successo:<br>"; echo "Nome file: ".$_FILES['uploadfile']['name']."<br>"; echo "Dimensione file: ".$_FILES['uploadfile']['size']."<br>"; echo "Tipo MIME file: ".$_FILES['uploadfile']['type']; } else{ // controllo il tipo di errore if ($_FILES['uploadfile']['error'] == 2){ // errore, file troppo grande (> 1MB) die("Errore, file troppo grande: il massimo consentito è 1MB"); } else{ // errore generico die("Errore, impossibile caricare il file"); } } //se non scrivo queste 2 righe mi stampa una cosa tipo: Warning: base64 expects string, array given in phpmailer.php line 2285 $filedata = file_get_contents($_FILES['uploadfile']['tmp_name']); $post_data = base64_encode($filedata); //crea allegato phpmailer $mail->AddStringAttachment($post_data, $_FILES['uploadfile']['name'], 'base64', 'application/pdf'); //ho provato con 'application/octet-stream' ma non cambia nulla
grazie,
L.![]()

Rispondi quotando