Search the Community
Showing results for tags 'allegato'.
Found 2 results
-
Salve a tutti, è circa 1 settimana che mi picchio con il PHP per inviare una email tramite un form con un allegato. Googlando un po ho trovato qualche cosa ma niente che funzioni al 100 %: con qualche guida non arriva l'allegato, con altre arriva tutto perfetto tranne sulle email @libero.it, e l'ultimo script che ho personalizzato che invia tutto perfetto tranne l'email su libero dove l'allegato non ha nome ed estensione e quindi non lo lascia nemmeno scaricare........ Chiedo aiuto a voi!!!!! posto lo script prodotto: // Recupero il valore dei campi del form $oggetto = $_POST['oggetto']; $messaggio2 = $_POST['messaggio']; $mail = $_POST['mittente']; //carico file allegato $attach = $_FILES["allegato"]["tmp_name"]; $file_name = $_FILES["allegato"]["name"]; $file_type = $_FILES["allegato"]["type"]; $file_size = $_FILES["allegato"]["size"]; // DELIMITATORE $boundary = md5(uniqid(microtime())); // APRIAMO L'ALLEGATO PER LEGGERLO E CODIFICARLO $file = @fopen($attach, "rb"); $contents = @fread($file, $file_size); $encoded_attach = chunk_split(base64_encode($contents)); @fclose($file); // INTESTAZIONI DELLA MAIL $headers = "From: Mittente <noreply@mittente.biz>\n"; $headers .= "To: Destinatario fittizio <news-tutti@clienti.xxxbiz>\n"; $headers .= "BCC: $destinatario\r\n"; $headers .= "MIME-version: 1.0\n"; $headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\n"; $headers .= "Content-Transfer-Encoding: 8bit\n"; // Verifico se il file è stato caricato correttamente via HTTP // In caso affermativo proseguo nel lavoro... $messaggio = "OGGETTO NEWS = $oggetto \n\n\n"; $messaggio .= "$messaggio2 \n\n\n\n\n\n"; $messaggio .= "--- \n"; // Verifico se il file è stato caricato correttamente via HTTP // In caso affermativo proseguo nel lavoro... if (is_uploaded_file($attach)) { // COSTRUIAMO IL CORPO DELLA MAIL $msg = "This is a multi-part message in MIME format.\n--$boundary\n"; $msg .= "Content-Type: text/plain; charset=iso-8859-9\n"; $msg .= "Content-Transfer-Encoding: 8bit\n\n" . $messaggio ."\n"; $msg .= "--$boundary\nContent-type: $file_type;\n name=\"$file_name\"\n"; $msg .= "Content-Transfer-Encoding: base64\nContent-Disposition: attachment\n filename=\"$file_name\"\n"; $msg .= chr(13) . chr(10).$encoded_attach."\n"; } else { $msg = $messaggio; } // Invio la mail if (mail("", $oggetto, $msg, $headers)) { echo "Mail inviata a $sendmail"; }else{ echo "<p>Errore Invio Mail!</p>"; } Vi ringrazio in anticipo :approved:
-
Script formmail con allegato funzionante solo su altervista
Gnappoide posted a topic in Io Programmo
Ciao a tutti, ho un piccolo problema con uno script in php per mandare email con un allegato. Su altervista la cosa funziona, mi arrivano gli allegati integri, mentre, con il nuovo hosting mi arrivano allegati danneggiati, ovvero che pesano 0kb.... Non so se è un problema di codice perchè su un hosting funziona tutto bene sull'altro no. Sotto posto il codice, non pretendo che ve lo leggiate, più che altro mi basta un consiglio su cosa vedere di sistemare o fare ;) function get_ext($key) { $key=strtolower(substr(strrchr($key, "."), 1)); // Cause there the same right? $key=str_replace("jpeg","jpg",$key); return $key; } function phattach($file,$name) { global $boundary; $fp=@fopen($file,"r"); $str=@fread($fp, filesize($file)); $str=@chunk_split(base64_encode($str)); $message="--".$boundary."\n"; $message.="Content-Type: application/octet-stream; name=\"".$name."\"\n"; //$message.="Content-disposition: attachment\n"; Thanks goes to someone named Chris (I think, it was awhile ago) for his fix below! $message.="Content-disposition: attachment; filename=\"".$name."\"\n"; $message.="Content-Transfer-Encoding: base64\n"; $message.="\n"; $message.="$str\n"; $message.="\n"; return $message; } //Little bit of security from people forging headers. People are mean sometimes :( function clean($key) { $key=str_replace("\r", "", $key); $key=str_replace("\n", "", $key); $find=array( "/bcc\:/i", "/Content\-Type\:/i", "/Mime\-Type\:/i", "/cc\:/i", "/to\:/i" ); $key=preg_replace($find,"",$key); return $key; } // Safe for register_globals=on =) $error=""; $types=""; $sent_mail=false; // Do some loopy stuff for the valid file types so people can see what types are valid before they try and upload invalid ones. $ext_count=count($allowtypes); $i=0; foreach($allowtypes AS $extension) { //Gets rid of the last comma If($i <= $ext_count-2) { $types .="*.".$extension.", "; } Else { $types .="*.".$extension; } $i++; } unset($i,$ext_count); // why not // If they post the form start the mailin'! If($_POST['submit']==true) { extract($_POST, EXTR_SKIP); // Check the form for errors If(trim($yourname)=="") { $error.="Non hai inserito il tuo nome e cognome.<br />"; } If(trim($youremail)=="") { $error.="Non hai inserito il tuo indirizzo email.<br />"; } Elseif(!eregi("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}\$",$youremail)) { $error.="Invalid email address.<br />"; } If(trim($emailsubject)=="") { $emailsubject=$defaultsubject; } If(trim($yourmessage)=="") { $error.="Non hai inserito un messaggio.<br />"; } // Verify Attachment info If($allowattach > 0) { //Loopish For($i=0; $i <= $allowattach-1; $i++) { If($_FILES['attachment']['name'][$i]) { $ext=get_ext($_FILES['attachment']['name'][$i]); $size=$_FILES['attachment']['size'][$i]; $max_bytes=$max_file_size*1024; //Check if the file type uploaded is a valid file type. If(!in_array($ext, $allowtypes)) { $error.= "Estensione del file allegato non valida: ".$_FILES['attachment']['name'][$i].", puoi allegare solo files in ".$types." Grazie.<br />"; //Check the size of each file } Elseif($size > $max_bytes) { $error.= "Il tuo: ".$_FILES['attachment']['name'][$i]." è troppo grande. Puoi allegare files grandi al massimo ".$max_file_size."kb.<br />"; } } // If Files } // For //Tally the size of all the files uploaded, check if it's over the ammount. $total_size=array_sum($_FILES['attachment']['size']); $max_file_total_bytes=$max_file_total*1024; If($total_size > $max_file_total_bytes) { $error.="Puoi allegare files grandi al massimo ".$max_file_total."kb<br />"; } } // If Allowattach If($error) { $display_message=$error; } Else { If($use_subject_drop AND is_array($subjects) AND is_array($emails)) { $subject_count=count($subjects); $email_count=count($emails); If($subject_count==$email_count) { $myemail=$emails[$emailsubject]; $emailsubject=$subjects[$emailsubject]; } } $boundary=md5(uniqid(time())); //Little bit of security from people forging headers. People are mean sometimes :( $yourname=clean($yourname); $yourmessage=clean($yourmessage); $youremail=clean($youremail); //Headers $headers="From: ".$yourname." <".$youremail.">\n"; $headers.="Reply-To: ".$yourname." <".$youremail.">\n"; $headers.="MIME-Version: 1.0\n"; $headers.="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n"; $headers.="X-Sender: ".$_SERVER['REMOTE_ADDR']."\n"; $headers.="X-Mailer: PHP/".phpversion()."\n"; $headers.="X-Priority: ".$priority."\n"; $headers.="Return-Path: <".$youremail.">\n"; $headers.="This is a multi-part message in MIME format.\n"; //Message $message = "--".$boundary."\n"; $message.="Content-Type: text/plain; charset=\"iso-8859-1\"\n"; $message.="Content-Transfer-Encoding: quoted-printable\n"; $message.="\n"; $message.="$yourmessage"; $message.="\n"; //Lets attach to something! =) If($allowattach > 0) { For($i=0; $i <= $allowattach-1; $i++) { If($_FILES['attachment']['name'][$i]) { $message.=phattach($_FILES['attachment']['tmp_name'][$i],$_FILES['attachment']['name'][$i]); } } //For } // If // End the message $message.="--".$boundary."--\n"; // Send the completed message If(!mail($myemail,$emailsubject,$message,$headers)) { Exit("Attenzione, è avvenuto un errore. \n"); } Else { $sent_mail=true; } } // Else } // $_POST- 8 replies
-
- allegato
- altervista
-
(and 5 more)
Tagged with: