PHP mailer invio form con 2 allegati.

  • Creatore Discussione Creatore Discussione piero60
  • Data di inizio Data di inizio

piero60

Utente Attivo
26 Gen 2015
71
2
8
Buogiorno a tutti,
utilizzo un form per invio email dal sito web, lo script che allego è diviso in tre parti e funziona perfettamente per inviare un solo allegato.
L'esigenza è quella di inviare con la stessa email 2 allegati, come posso modificarlo? il tutto si basa sulla classe PHPmailer.

Allego i tre step attuali, in ordine: il form, il recupero delle variabili e la funzione di invio.
Nel form ho aggiunto la seconda voce uploadfile1.

FORM:
HTML:
<!DOCTYPE html>
<html dir="ltr" lang="en-US"><head>
    <meta charset="utf-8">
    <title>xxxxxxx</title>
    <meta name="viewport" content="initial-scale = 1.0, maximum-scale = 1.0, user-scalable = no, width = device-width">
</head>
<body>


<form action="mail2.php" enctype="multipart/form-data" method="POST">
<input name="numT" type="text" value="web@xxxxxx.com" />
	<table>
      <tr>
      	<td>Mittente: </td>
     	 <td><input name="mitt" type="text" value="xxxxxxxx@aruba.it" /></td>
      </tr>
      <tr>
     	 <td>Oggetto: </td>
     	 <td><input name="subj" type="text" /></td>
      </tr>
      <tr>
      	<td>Messaggio: </td>
      	<td><textarea name="msg"></textarea></td>
      </tr>	
      <tr>
     	 <td>Carica File</td>
     	 <td><input  name="uploadfile" type="file" />
     	 <td><input  name="uploadfile1" type="file" />		 		 
		 </td>
      </tr>
	</table>
 
	<input class="butt" type="submit" value="Invia!" />
</form>

</body></html>

RECUPERO DELLE VARIABILI:
PHP:
<? 
  require_once("class.phpmailer.php");
  include 'functions_contact.php';
 
 
  $msg = $_POST['msg'];
  $subj = $_POST['subj'];
  $from = $_POST['mitt'];
  $dest = $_POST['numT'];
  $doc = false;
  $tit = '';

  
  if(is_uploaded_file($_FILES['uploadfile']['tmp_name'])){
      if ($_FILES['uploadfile']['error'] == 0){
          echo "Upload terminato con successo: ";
          echo "Nome file: ".$_FILES['uploadfile']['name']."";
          echo "Dimensione file (kB): ".number_format((($_FILES['uploadfile']['size'])/8)/(1024), 2, '.', '')."";
          echo "Tipo MIME file: ".$_FILES['uploadfile']['type'];
      }else{
          if ($_FILES['uploadfile']['error'] == 2)		
              die("Errore, file troppo grande: il massimo consentito è 1MB");
          else
              die("Errore, impossibile caricare il file");	
      } 	
      echo '';
      $doc = file_get_contents($_FILES['uploadfile']['tmp_name']);
      $tit = $_FILES['uploadfile']['name'];	
  }else{
      $doc = false;
      $tit = '';
  }
     
  sendMail($dest, $msg, $subj, $mitt, $mitt, $doc, $tit);
  
?>

INVIO EMAIL:
PHP:
<? 
  function sendMail($dest, $msg, $subj, $from, $rep_to, $doc, $tit){
    
    $msg = utf8_decode($msg);
    $subj = utf8_decode($subj);
    
    $mail = new PHPmailer();
    $mail->From=$from;
    $mail->FromName='xxxxxxx';
    $mail->AddAddress($dest);
    $mail->AddReplyTo($rep_to); 
    $mail->Subject=$subj;
    $mail->Body=$msg;
    
    if($doc != false)
    	$mail->AddStringAttachment($doc, $tit, 'base64', 'application/octet-stream');
    
    if(!$mail->Send()){
    	echo "ERRORE: ".$mail->ErrorInfo; 
    }else{ 
    	echo 'Email inviata correttamente!';
    }
    
    unset($mail);
  }
?>
 
Credo sia sufficiente fare due Attachment

PHP:
$mail->AddStringAttachment($doc1, $tit, 'base64', 'application/octet-stream');
$mail->AddStringAttachment($doc2, $tit, 'base64', 'application/octet-stream');

P.S. naturalmente prima di allegare anche il secondo va caricato come il precedente.
 
Ultima modifica:
ciao
un particolare importante: quando fai caricare dei file controlla l'estenzione e fai caricare solo i files consentiti.
non credo che ti piacerebbe (scrivo per assurdo) che ti caricassero un bel cancella_tutto_il_disco.exe
 

Discussioni simili