Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885

    mail con allegato, errore sulla codifica base64_encode (penso)

    ciao , sto cercando di creare una specie di mail-list che pesca gi indirizzi da un database.
    Le mail le invia , ma deve esserci un errore sulla codifica .

    su gmail viene inviato il messaggio correttamente ma l'allegato non ha nome (il meno) e non ha consistenza; ossia viene visualizzato ma non si riesce ne a leggere ne a scaricare.

    su hotmail viene stampato (penso) l'allegato codificato e non viene visualizzato il file .

    lo script lo riadattato alle mie esigenze , ma non caisco dove possa essere l'errore!

    Codice PHP:
    <?php
    include 'connect.php';
    $mittente $_POST['mittente'];
    $oggetto $_POST['oggetto'];
    $messaggio $_POST['messaggio'];

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

    $headers "From: " $mittente;
    $msg="";
     if (!
    $connesso){
            die (
    "errore nella connessione al database\n -----> " .mysql_error());
        }
        if (
    is_uploaded_file($allegato)){
       
    //apro e leggo l'allegato
       
    $file fopen($allegato"rb");
       
    $data fread($filefilesize($allegato));
       
    fclose($file);

       
    //adatto il file al firmato MINE base64 usando base64_encode
    $data chunk_split(base64_encode($data));

    //genero il separatore , serve per dividere le parti testuali all'allegato
    $semi_rand md5(time());
    $mine_boundary "==Multipart_Boundary_x{$semi_rand}x";

    //aggiungo le intestazioni necessarie per l'allegato
    $headers .= "\nMINE-version: 1.0\n";
    $headers .= "Content-Type: multipart/mixed;\n";
    $headers .= "boundary=\"{$mine_boundary}\"";

    //definisco il tipo di messaggio (MINE-multi-part)
    $msg .=  "THIS IS A NEW MESSAGE \n\n";

    //mettiamo il separatore al messaggio
    $msg .= "--{$mine_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 sepaaratore
    $msg .= "--{$mine_boundary}\n";
    //aggiungo l'allegato alla mail

    $msg .= "Content-Disposition: attachment;\n";
    $msg .= " filename=\"{$allegato_name}\"\n";
    $msg .= "Content-Transfert-Encoding: base64\n\n";
    $msg .= $data "\n\n";
    //chiudo con il separatore
    $msg .= "--{$mine_boundary}--\n";
    }else{
        
    $msg .= $messaggio;
    }
    $sql "SELECT email_add FROM mail_list;";
        
    $query mysql_db_query($db_nome$sql);
        while(
    $row mysql_fetch_assoc($query)){
            
    $destinatario $row['email_add'];
    $invio mail($destinatario$oggetto$msg $headers);
        }
    //invio della mail vera e propria
    if ($invio){
        echo 
    "email inviata";
    }else{
        echo 
    "errore nell'invio della mail";
    }

    ?>
    inserisco il codice per miglior comprensione.

    Grazie anticipatamente dellaiuto..

  2. #2
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    Ho tirato giù il progetto PHPMailer.

    solo che non funziona.
    io voglio caricare da db gli indirizzi a cui invierò un allegato caricato tramite un form.

    Codice PHP:
    <?php
    include 'connect.php';
    require 
    'PHPMailer/class.phpmailer.php';
    $mail = new PHPMailer();

    $mittente $_POST['mittente'];
    $allegato $_FILES['allegato']['tmp_name'];
    $oggetto $_POST['oggetto'];
    $messaggio $_POST['messaggio'];
    $mail ->From $mittente;
    $mail ->FromName "nome e cognome";
    $mail ->Subject $oggetto;
    $mail ->Body $messaggio;
    $mail -> AddAttachment($allegato);
     
    $sql "SELECT mail_add FROM mail_list;";
        
    $query mysql_db_query($db_nome$sql);
        while(
    $row mysql_fetch_assoc($query)){
        
    $destinatario $row['mail_add'];
            
    $mail -> AddAddress($destinatario);
        
    $mail->Send();
        }
    if (
    $mail->Send()){
        echo 
    "invio riuscito";
    }else{
       echo 
    "errore";
    }
    ora l'output che restituisce e quella stringa 'errore' ciò significa che $mail->Send() restituisce false... qualcuna sa dirmi il perchè?

    non ho nemmeno la possibilità di tirare su un debug.
    Non vorrei sia un problema di compatibilità visto che uso PHP 4.3.8 grazie a tutti

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.