email con allegato

maurofucile

Nuovo Utente
10 Mar 2013
2
0
0
Salve a tutti, ho un problema con il codice php.
Mi spiego, avrei bisogno di inviare un file allegato ad una mail tramite un form.
In rete ho recuperato questo script che funziona perfettamente con i file .doc, permette di inviare i file .jpeg che però non vengono ricevuti mentre i file .pdf li ricevo ma non riesco ad aprirli.
Posto il codice nella speranza che qualcuno riesca ad aiutarmi.
Il sito è su server aruba.

PHP:
<html>
<head>
<title>MMKit Tutorial - Send mail with attach</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#D2D2D2" leftmargin="3" topmargin="3" marginwidth="0" marginheight="0" text="#000000">
<?
function validate_upload($thefile) {
	global $thefile_type, $thefile_name, $thefile_size;
  $my_max_file_size 	= "3145728"; # in bytes

	$registered_types = array(
	                          "application/msword" => ".doc",
				  "application/octet-stream" => ".doc",
				  "application/pdf" => ".pdf",
				  "image/jpeg" => ".jpeg"
				  ); # these are only a few examples, you can find many more!
	$allowed_types = array("application/msword", "application/octet-stream", "application/pdf", "image/jpeg");
	$start_error = "\n";
	if ($thefile == "none") { # do we even have a file?
		$error .= "\n- Nessun documento allegato.<br>";
	} else { # check if we are allowed to upload this file_type
		if ($thefile_size>$my_max_file_size) $error .= "\n- Il file allegato supera la dimensione massima consentita.<br>";
		if (!in_array($thefile_type, $allowed_types)) {
			$error .= "\n- Il file che hai inserito non &egrave; del tipo richiesto:
						<br>\n";
			while ($type = current($allowed_types)) {
				$error .= "\n" . $registered_types[$type] . " (" . $type . ")<br>";
				next($allowed_types);
			}
			$error .= "\n";
		}
		if ($error) {
			$error = $start_error . $error . "\n";
			return $error;
		} else {
			return false;
		}
	}
} # END validate_upload
?> 
<font face="Arial, Helvetica, sans-serif" size="2"><br>
<?
if ($op=="invio") {
	$error=0;
	$msg="";
	if ($nome=="") {
		$error=1;
		$msg.="- Il campo nome è vuoto.<br>";
	}
	if ($cognome=="") {
		$error=1;
		$msg.="- Il campo cognome è vuoto.<br>";
	}
	if ($email=="") {
		$error=1;
		$msg.="- Il campo email è vuoto.<br>";
	}
	if ($email!="" && !eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email)) {
		$error=1;
		$msg.="- L'email inserita non è valida.<br>";	
	}
	if ($commento=="") {
		$error=1;
		$msg.="- Il campo commento è vuoto.<br>";
	}
	$error_file="";
	if (!$thefile || $thefile=="none" || $thefile=="") {
		$error=1;
		$msg.="- Non hai inserito il certificato.<br>";
	} else $error_file = validate_upload($thefile);
	if ($error==1 || $error_file!="") {
		echo"<br><br>Attenzione! Si sono verificati i seguenti errori:<br>$msg<br>$error_file<br><a href=\"javascript:history.back()\">Clicca qui</a> per reinserire i dati.";	
	} else {
		$emailto="[email protected]"; // INSERIRE L'EMAIL QUI!!
		$data=date("j/m/Y");
		$ora=date("h:i:s");
		
		$headers = "MIME-Version: 1.0\n";
		$headers .= "Content-Type: multipart/mixed; boundary=\"XX-1234DED00099A\"\n";
		$headers .= "Content-Transfer-Encoding: 7bit\n";
		$headers .= "From: $email\n";
		
		$messaggio="--XX-1234DED00099A\n";
		$messaggio.="Content-Type: text/plain; charset=iso-8859-1\n";
		$messaggio.="Content-Transfer-Encoding: 7bit\n\r";

		$messaggio.="Certificato inviato il $data alle $ora\n\r\nDati inseriti\n";
		$messaggio.="Nome: $nome\n\rCognome: $cognome\n";
		if ($telefono!="") $messaggio.="Telefono: $telefono\n";
		$messaggio.="Email: $email\nCommento:\n$commento\n";
		$oggetto_send="Invio Certificato";
		
		
		$messaggio.="--XX-1234DED00099A\n";
		$messaggio.="Content-Type: {$thefile_type}; name=\"certificato\"\n";
		$messaggio.="Content-Transfer-Encoding: base64\n";
		$messaggio.="Content-Description: \"Certificato\"\n";
		$messaggio.="Content-Disposition: attachment\n\r";
		
		$fp=@fopen($thefile, "r");
		if ($fp) {
			$data = fread($fp, filesize($thefile));	
		}
		$curr = base64_encode($data);
		$messaggio .= "$curr\n\r--XX-1234DED00099A--\n";
		if (!mail($emailto, $oggetto_send, $messaggio, $headers)) {
			echo"<br><b>Attenzione.</b><br>Si sono verificati degli errori durante l'invio della Email.<br>
			Vi preghiamo di riprovare <a href=\"javascript: history.back()\">cliccando qui.</a><br>
			Se l'errore persiste Vi invitamo a riprovare più tardi. Grazie.";
		}
		else {
			$messaggio_risposta="Grazie per aver usato questo servizio.\n\rAbbiamo inviato il vostro certificato alla Segreteria competente.\n\r\n\rDati inseriti\n";
			$messaggio_risposta.="Nome: $nome\n\rCognome: $cognome\n\r";
			if ($telefono!="") $messaggio_risposta.="Telefono: $telefono\n\r";
			$messaggio_risposta.="Commento:\n\r$commento\n\r\n\r";
			$messaggio_risposta.="Distinti saluti,\n\r";
			$oggetto2="Certificato inoltrato";
			mail($email, $oggetto2, $messaggio_risposta,"From: NOMESITO <$emailto>");
			echo "<br><b>Email inviata correttamente.</b><br>
			<br>I dati inseriti sono i seguenti:<br><br>";
			echo"Nome:<b> $nome </b><br>
			Cognome:<b> $cognome</b><br>";
			if ($telefono!="") echo"Telefono: <b>$telefono</b><br>";
			echo"Email: <b>$email</b><br>Commento:<b> ".nl2br($commento)."</b><br>
			<br><br>Grazie per aver usato questo servizio.";
		}
	}
	
} else {
?>
			<br><br>Form per invio certificato<br><br>
      <form enctype="multipart/form-data" method="post" action="<?=$PHP_SELF?>" name="contatti">
        <table width="550" border="0" cellspacing="3" cellpadding="0">
          <tr> 
            <td>Nome *</td>
            <td> 
              <input type="text" name="nome" size="30">
            </td>
          </tr>
          <tr> 
            <td>Cognome *</td>
            <td> 
              <input type="text" name="cognome" size="30">
            </td>
          </tr>
          <tr> 
            <td>Telefono</td>
            <td> 
              <input type="text" name="telefono" size="30">
            </td>
          </tr>
          <tr> 
            <td>Email *</td>
            <td> 
              <input type="text" name="email" size="30">
            </td>
          </tr>
          <tr> 
            <td>Allega il tuo certificato<br>(formato .doc - Max 3 Mb) *</td>
            <td>
              <input type="hidden" name="MAX_FILE_SIZE" value="3145728"> 
              <input name="thefile" type="file" SIZE="35">
            </td>
          </tr>
          <tr> 
            <td>Commento *</td>
            <td> 
              <textarea name="commento" wrap="VIRTUAL" cols="30" rows="5"></textarea>
            </td>
          </tr>
          <tr> 
            <td colspan="2">
              <div align="center">
              	<input type="hidden" name="op" value="invio">
                <input type="submit" name="Submit" value="Invia">
                <input type="reset" name="Submit2" value="Reimposta">
              </div>
            </td>
          </tr>
        </table>
      </form>
      <font size="1">I campi con l'asterisco sono obbligatori.<br>
      <?
}
?> 
       </font>
      
</table>
</body>

</html>
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
guardando meglio mi sono accorto di alcune cose
credo che lo script che hai usato sia di una versione paleolitica, infatti
per verificare l'indirizzo email usi eregi, la funzione eregi è deprecata,
usi lo short tag <? al posto di <?php
non usi i $_POST per ricevere i dati dal form
ho la vaga impressione che ti convenga rivedere un po' il tutto, non solo l'invio dell'allegato
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Nome del file allegato alla email inviata con CDOSYS Classic ASP 0
D Email con allegato PHP 2
R invio email php con allegato PHP 1
A Aiuto per form email con allegato PHP 4
M invio email con più di un allegato PHP 1
C Email e allegato con PHP PHP 3
G ricevere una email dal web e inviare una risposta con allegato Classic ASP 2
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
Cosina Upload multiplo con invio allegati per email PHP 0
Sergio Unia Ricezione email con destinatari multipli [Risolto] PHP 2
S [PHP] email con inserimento dati nel database PHP 23
F [PHP] modifica del body email con checked PHP 8
Tommy03 Errore invio email con PHP PHP 1
V Ricevere messaggi email certificata con CDO o altro oggetto in ASP Classic ASP 0
K COMPRO account email italiani con password URGENTE Vendere e Acquistare pubblicita' online 3
Tommy03 Invio email con PHP PHP 3
felino [WordPress] [WooCommerce] Ordine: aggiungere nuovi stati con notifica email al cliente WordPress 4
M redirect php email inviata con successo PHP 2
Matteo Lorenzon [PHP][WORDPRESS] Form in Wordpress, creazione PDF con dati del form ed invio tramite email WordPress 1
Y INVIO AUTOMATICO EMAIL CON PHP PHP 4
P problemi invio email con phpmailer PHP 47
A [PHP] Autorisponditore con email in formato html PHP 18
L invio smtp con phpmailer - problema invia due volte la email allo stesso utente PHP 0
V Servizio email con calendario condiviso Posta Elettronica 1
Monital Invio email con dati di una funzione JS PHP 1
A [VENDO] Database di 130.000 Ristoranti Italiani con Email Offerte e Richieste di Lavoro e/o Collaborazione 0
D Form Registrazione con conferma via email - problema PHP 10
P Email con Jquery jQuery 4
M inviare email con access MS Access 3
Shyson Camuffare email con php PHP 5
Shyson Inviare css con form email PHP 1
M Tabella PHP con sorgente dati csv: selezionare le riche e compilare Form eMail PHP 1
O Problema con email in formato HTML PHP 1
novello88 [risolto] Andare a capo in email di testo inviata con ASP Classic ASP 2
S creazione test con invio risposta a una email prescelta PHP 4
N Problema Email con php PHP 1
A invio email con immagine inline senza clips PHP 0
R Ricerca Email in database mysql con php PHP 2
T [risolto] Realizzare un form email con multi scelta Sviluppo app per Android 2
P Problemi con phpmail ed invio email PHP 0
L problema email con funzione mail PHP 1
A funzioe email() con virgilio PHP 0
A Piccolo problema con form email HTML e CSS 2
P inviare email con contenuto javascript PHP 5
S Registrazione con conferma email. PHP 9
D Problema con funzione preg_match() per controllo email PHP 2
P Non riesco più ad inviare email con il php PHP 82
A problema con l'invio della password tramite email PHP 23
G Form mail con indirizzo email del mittente PHP 3
C Passare array con email da un form via post PHP 3

Discussioni simili