Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    roblema con invio email con allegato

    Buongiorno a tutti.

    Sto avendo unproblema con l'invio di email con allegato in HTML vi posto il odice:

    Codice PHP:
    $to=trim($_REQUEST["To"]);
    $from=trim($_REQUEST["From"]);
    $subject=trim($_REQUEST["Subject"]);
    $file_tmp=$_FILES["Attachment"]["tmp_name"];
    $file_name=$_FILES["Attachment"]["name"];
    $file_size=$_FILES["Attachment"]["size"];
    $file_type=$_FILES["Attachment"]["type"];
    $text=trim(stripslashes(str_replace("\n","
    "
    ,$_REQUEST["Text"])));
        
    if(
    is_uploaded_file($file_tmp)){
    $boundary md5(uniqid(microtime()));

    // APRO L'ALLEGATO PER LEGGERLO E CODIFICARLO
    $file = @fopen($file_tmp"r");
    $contents = @fread($file$file_size);
    $encoded_attach chunk_split(base64_encode($contents));
    @
    fclose($file);

    // INTESTAZIONI DELLA MAIL
    $mail_headers .= "MIME-version: 1.0\n";
    $mail_headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"";
    $mail_headers .= "X-attachments: $file_name\n";

    // COSTRUISCO IL CORPO DELLA MAIL
    $mail_body "--$boundary\n";
    $mail_body .= "Content-Type: text/html; charset=us-ascii\n";
    $mail_body .= "Content-Transfer-Encoding: 7bit\n\n";
    $mail_body .= "$text\n\n";
    $mail_body .= "--$boundary\n";
    $mail_body .= "Content-type: $file_type; name=\"$file_name\"\n"
    $mail_body .= "Content-Transfer-Encoding: base64\n";
    $mail_body .= "$encoded_attach\n";
    $mail_body .= "--$boundary--\n";
    }else{
    $mail_body=$text;
    }
    // INVIO DELLA MAIL
    if(@mail($to$subject$mail_body$mail_headers))
    {
    pritn "Email inviata";
    }
    esle{
    print
    "Errore!";

    la email che mi arriva mi arriva come email anonima "Da: anonymous@webxc13s05.ad.aruba.it "

    mentre l'allegato mi compare ma 0 kb di dimensioni " 1 allegato listino 0...pdf (0,0 KB)"

    mi dite in che sbaglio???? Grazie.

  2. #2
    L'errore stà nell'inviare un email direttamente con una funzione (mail) alla quale si dovrebbe rinunciare.

    http://forum.html.it/forum/showthrea...readid=1215634

    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  3. #3
    PS: la funzione mail da problemi su windows perché "disgraziatamente" è stata implementata ad hoc ... su linux invece viene usata sendmail

    Se ci sono problemi nell'uso di mail, durante lo sviluppo, spesso questi derivano dal fatto che la piattaforma di sviluppo è Windows.

    Però questo non vuol dire che la funzione mail va cestinata in toto!

    Un'errore comune che si fa, come è in questo caso, è quello di usare solo \n per separare le righe quando invece la specifica richiede esplicitamente l'uso di \r\n. Un'altra cosa importante è specificara negli headers il from, il to, il subject, il return path, il date e via dicendo perché mentre su linux, ripeto, lavora sendmail e non ci son problemi, su windows non è tutto rose e fuori.

    Per finire, l'ultimo parametro della funzione mail conviene SEMPRE impostarlo con -f indirizzo-email-from. L'ultimo parametro viene passato a sendmail su linux mentre su windows viene interpretato da php e utilizzato di conseguenza ... magari andando a coprire altri problemi.

    E' probabile che se fai qualche prova e correggi gli errori/sviste riuscirai a far funzionare il tutto

    poi, per carità, anch'io non uso la funzione sendmail ed ho una semplice classettina che fa la connessione al server smtp e invia la posta, però conviene sapere quali possono essere i problemi e da cosa derivano

  4. #4
    ecco daniele forse far lavorare smtp mi sarebbe l'ideale potresti dirmi come fare???

  5. #5
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    Codice PHP:
    <?php
    include 'utility/connect.php';
    //Nella variabile $mess va inserito tutto il codice html che comporrà il corpo dell'email che si vuole inviare. Come nell'esempio si possono utilizzare anche i fogli di stile.*/ 
    $oggetto=$_POST['oggetto'];
    $mittente=$_POST['mittente'];
    //$reply="miaemail@email.com";
    $titolo=$_FILES['allegato']['name'];
    $f=$_FILES['allegato']['tmp_name']; 
    $filetype=$_FILES['allegato']['type'];
    $intestazioni "From: $mittente\nReply-To: $reply\nX-Mailer: Sismail Web Email Interface\nMIME-version: 1.0\nContent-type: multipart/related;\n boundary=\"Message-Boundary\"\nContent-transfer-encoding: 7BIT\nX-attachments: $titolo"
    $filez fopen($f"r"); 
    $contents fread($filezfilesize($f)); 
    $encoded_attach chunk_split(base64_encode($contents)); 
    fclose($filez); 

    $msg_body .= "\n\n--Message-Boundary\n"
    $msg_body .= "Content-ID: miaimmagine";
    $msg_body .= "Content-type: $filetype; name=\"$titolo\"\n"
    $msg_body .= "Content-Transfer-Encoding: BASE64\n"
    $msg_body .= "Content-disposition: attachment; filename=\"$titolo\"\n\n";
    $msg_body .= "$encoded_attach\n";
    //$msg_body .= "$encoded_attach";
    $body_top .= "Content-type: text/html; charset=iso-8859-1\n"
    $body_top .= "Content-transfer-encoding: 7-BIT\n"
    $body_top .= "Content-description: Mail message body\n\n";
    $body_top .="
    <a href=\"\"><img src=\"\"/>" 
    $msg_body "</a>";        
    $mess="MESSAGGIO IN HTML";
    //$body_top .= "\n\n--Message-Boundary\n";    

                
    $body_top .= "\n\n--Message-Boundary\n";    
                
    $body_top .= "Content-type: text/html; charset=iso-8859-1\n"
                
    $body_top .= "Content-transfer-encoding: 7-BIT\n"
                
    $body_top .= "Content-description: Mail message body\n\n";
                
    $body_top .=  $mess ;
                    
                
    $sql "SELECT campo mail FROM tabella;";
            
    $query mysql_db_query($db_nome$sql);
            while(
    $row mysql_fetch_assoc($query)){
                
    $destinatario $row['mail_add'];
                    
    $mail_invio mail($destinatario,$oggetto,$body_top"Per cancellarsi dalla mail list clicca <a href=\"path http.php?conferma=si&email=$destinatario\">qui</a></body></html>           ",$intestazioni);
        }
    if(!
    $mail_invio){ 
        
    header("Location:index.php?verifica=0");
    }else{
        
    header("Location:index.php?verifica=1");
        } 

    ?>
    ciao , io ho scritto questo l'altro gg è funziona.. lo testato e dopo settimane di sclero eccolo qui... prova a vedere se funge anche da te!
    ciao

  6. #6
    tapu ho fatto col tuo esmepio ecco il codice:
    Codice PHP:
    $to=trim($_REQUEST["To"]);
        
    $from=trim($_REQUEST["From"]);
        
    $subject=trim($_REQUEST["Subject"]);
        
    $text=trim($_REQUEST["text"]);
        
        
    $titolo=$_FILES["Attachment"]["name"]; 
    $f=$_FILES["Attachment"]["tmp_name"]; 
    $filetype=$_FILES["Attachment"]["type"]; 
    $intestazioni "From: $from\nReply-To: $reply\nX-Mailer: Sismail Web Email Interface\nMIME-version: 1.0\nContent-type: multipart/related;\n boundary=\"Message-Boundary\"\nContent-transfer-encoding: 7BIT\nX-attachments: $titolo"
    $filez fopen($f"r"); 
    $contents fread($filezfilesize($f)); 
    $encoded_attach chunk_split(base64_encode($contents)); 
    fclose($filez);
     
    $msg_body .= "\n\n--Message-Boundary\n"
    $msg_body .= "Content-ID: miaimmagine"
    $msg_body .= "Content-type: $filetype; name=\"$titolo\"\n"
    $msg_body .= "Content-Transfer-Encoding: BASE64\n"
    $msg_body .= "Content-disposition: attachment; filename=\"$titolo\"\n\n"
    $msg_body .= "$encoded_attach\n"
    $body_top .= "Content-type: text/html; charset=iso-8859-1\n"
    $body_top .= "Content-transfer-encoding: 7-BIT\n"
    $body_top .= "Content-description: Mail message body\n\n"

    $body_top .= "\n\n--Message-Boundary\n";     
                
    $body_top .= "Content-type: text/html; charset=iso-8859-1\n"
                
    $body_top .= "Content-transfer-encoding: 7-BIT\n"
                
    $body_top .= "Content-description: Mail message body\n\n"
                
    $body_top .=  $text 

    if(
    mail($to,$subject,$body_top,$intestazioni)) {
    ... 
    ma mi invia una email sena allegato e senza body

  7. #7
    ok sono riuscito a formattare il body in html ma l'allegato non me lo dà e non capisco il perchè

  8. #8
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    ciao , allora in effetti non ti parte perchè ne ho 3
    ora ti posto questo che dovrebbe essere funzionanre

    Codice PHP:
    <?php
    include 'utility/connect.php';
    //volendo si può mandare un messaggio standard in stile html abbinato a foglio di stile; oppure inserire dentro il foglio il messaggio personalizzato
    $mess="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"> 
    <HTML><HEAD> 
    <META http-equiv=Content-Type content=\"text/html; charset=iso-8859-1\"> 
    <STYLE> 
    H5 {text-align: justify; text-decoration: none; color: #333333; font-size: 12px; font-family: Arial} 
    A:link, A:visited, A:hover { color: #FFcc00 } 

    </STYLE> 
    </HEAD> 
    <BODY bgColor=#ffffff link=#333333 alink=#333333 vlink=#333333> 
    <DIV><h5>BLA BLA BLA BLA. Questo è il corpo dell'email; si possono usare tutti i tag html, come se si trattasse di una pagina internet.</h5> 
    </BODY></HTML> 
    "
    ;
    /*Nella variabile $mess va inserito tutto il codice html che comporrà il corpo dell'email che si vuole inviare. Come nell'esempio si possono utilizzare anche i fogli di stile.*/ 

    $destinatario =""/*Inserire l'indirizzo email a cui si vuole spedire l'email*/ 
    $oggetto=$_POST['oggetto']; /*Inserire l'oggetto dell'email da spedire*/ 
    $mittente=$_POST['mittente']; /*Inserire l'indirizzo email che verrà visulaizzato come mittente dell'email*/ 
    //$reply="miaemail@email.com"; /*Inserire l'indirizzo email a cui verranno inviate le risposte all'email inviata*/ 

    $titolo=$_FILES['allegato']['name']; /*Inserire il nome che si vuole dare all'allegato*/ 
    $f=$_FILES['allegato']['tmp_name']; /*Inserire l'indirizzo del file che si vuole inviare come allegato*/ 
    $filetype=$_FILES['allegato']['type']; /*Inserire il formato MIME del file da allegare*/ 



    /*Non modificare nulla al di sotto di questa linea*/ 

    $intestazioni "From: $mittente\nReply-To: $reply\nX-Mailer: Sismail Web Email Interface\nMIME-version: 1.0\nContent-type: multipart/mixed;\n boundary=\"Message-Boundary\"\nContent-transfer-encoding: 7BIT\nX-attachments: $titolo"



    $body_top "--Message-Boundary\n";
    $body_top .= "Content-type: text/html; charset=latin1\n";
    $body_top .= "Content-transfer-encoding: 7BIT\n";
    $body_top .= "Content-description: Mail message body\n\n";

    $msg_body =  $body_top  .  $mess  //oppure $mess per visualizzare il file in alto

    $filez fopen($f"r");
    $contents fread($filezfilesize($f));
    $encoded_attach chunk_split(base64_encode($contents));
    fclose($filez);


    $msg_body .= "\n\n--Message-Boundary\n";
    $msg_body .= "Content-type: $filetype; name=\"$titolo\"\n";
    $msg_body .= "Content-Transfer-Encoding: BASE64\n";
    $msg_body .= "Content-disposition: attachment; filename=\"$titolo\"\n\n";
    $msg_body .= "$encoded_attach\n";
    $msg_body .= "--Message-Boundary--\n";

    $sql "SELECT email_add FROM mail_list;";
        
    $query mysql_db_query($db_nome$sql) or die ("mysql   " .mysql_error());
        while(
    $row mysql_fetch_assoc($query)){
        
    $destinatario $row['email_add'];
        echo 
    $destinatario;
       
    $mail_invio mail($destinatario,$oggetto,$msg_body$intestazioni);
      }
    if (!
    $mail_invio){
    echo 
    "error";
    }
    questo funziona ... lo appena provato ciao

  9. #9
    ok lo provo domani e ti faccios apere grazie per ora e ciao.

  10. #10
    ottimo tapu funge alla grande tutto.

    Vorrei chiederte solo un'ultima cosa se è possibbile, se gli alelgati sono + di 1 come dovrei modificar eil codice???

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.