Cercando nel forum ho visto che il modo più semplice per allegare più di un file è ricorrere alla classe PHPMailer. Bene... Ho provato a modificare il codice in questo modo:
Codice PHP:
<?php
$FriendName = $_POST['FriendName'];
$FriendEmail = $_POST['FriendEmail'];
$Nome = $_POST['Nome'];
$Cognome = $_POST['Cognome'];
$Anni = $_POST['Anni'];
$Professione = $_POST['Professione'];
$oggetto = $_POST['oggetto'];
$Email = $_POST['Email'];
$Commento = $_POST['Commento'];
$massimo = 500;
$string = $_SERVER['QUERY_STRING'];
$allegato_1 = $_FILE['allegato_1'];
$allegato_2 = $_FILE['allegato_2'];
$allegato_3 = $_FILE['allegato_3'];
?>
<html><head>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' deve contenere un indizzo Email valido.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- Il campo '+nm+' necessario.\n'; }
} if (errors) alert('Si sono verificati i seguenti errori:\n'+errors);
document.MM_returnValue = (errors == '');
}
//-->
</script>
<style type="text/css">
<!--
body{
overflow:hidden
}
.Stile2 {color: #FF0000; text-align:}
.Stile3 {
font-size: 12px;
font-family: Arial;
}
.Stile5 {
color: #FFFFFF;
font-size: 2px;
}
</style>
<script type="text/javascript">
var massimo = 700;
window.onload = function()
{
document.form1.conta.value = massimo;
}
function ContaCaratteri()
{
document.form1.conta.value = massimo - document.form1.Commento.value.length;
if (document.form1.Commento.value.length > massimo)
{
document.form1.Commento.value = document.form1.Commento.value.substr(0, massimo);
document.form1.conta.value = 0;
alert("Massimo " + massimo + " caratteri!");
}
}
</script>
</head>
<body>
<?php
if (!$FriendEmail) {
?>
<form name="form1" onSubmit="MM_validateForm('Nome','','R','Anni','','R','Email','','RisEmail','FriendName','','R','FriendEmail','','RisEmail','Commento','','R');return document.MM_returnValue" action="" method="POST">
<div align="center">
<table width="647" border="0" cellspacing="0" cellpadding="3">
<tr>
<td align="right" valign="top"></td>
<td></td>
<td></td>
<td width="108"></td>
<td><div align="right" class="Stile3">I campi <span class="Stile2">*</span> sono obbligatori </div></td>
</tr>
<tr>
<td align="right" valign="top"><font face="Verdana" size="2">[b]Oggetto :[/b]</font></td>
<td></td>
<td><font face="Verdana">
<input type="text" name="oggetto" size="18">
</font></td>
<td></td>
<td></td>
</tr>
<tr>
<td width="178" align="right" valign="top"></td>
<td width="5"><font face="Verdana" size="2"></font></td>
<td colspan="2"><font face="Verdana" size="2">Nome e Cognome:</font></td>
<td width="192"><font face="Verdana" size="2">Et:<span class="Stile2">*</span></font></td>
</tr>
<tr>
<td align="right" valign="top"><font face="Verdana" size="2">[b]I tuoi dati :[/b]</font></td>
<td></td>
<td colspan="2"><font face="Verdana"><input type="text" name="Nome" size="28"><font size="2"></font></font><font face="Verdana"><font size="2"></font></font></td>
<td><font face="Verdana">
<input type="text" name="Anni" size="4">
<font size="2"></font></font></td>
</tr>
<tr>
<td align="right" valign="top"></td>
<td></td>
<td width="108"><font face="Verdana" size="2">Professione:</font></td>
<td><font face="Verdana" size="2">E-mail:<span class="Stile2">*</span></font></td>
<td></td>
</tr>
<tr>
<td align="right" valign="top"></td>
<td></td>
<td><font face="Verdana">
<input type="text" name="Professione" size="18">
<font size="2"></font></font></td>
<td colspan="2"><font face="Verdana"><input type="text" name="Email" size="30"></font></td>
</tr>
<tr>
<td align="right" valign="top"><font face="Verdana" size="2">[b]Il tuo commento:[/b]</font></td>
<td></td>
<td colspan="3" valign="top">
<font face="Verdana">
<textarea name="Commento" cols="56" rows="6" style="font-family: Trebuchet MS; font-size: 10pt" onKeyUp="ContaCaratteri()"></textarea>
<span class="Stile2">*</span> </font></td>
</tr>
<tr>
<td align="right"></td>
<td><font face="Verdana" size="2"> </font> </td>
<td colspan="2">
<div align="left"><font face="Verdana"><font size="2"> </font> </font> <font face="Verdana">
<input type="text" size="4" name="conta" readonly>
</font><font face="Verdana" size="2">Caratteri rimanenti </font></div></td>
<td></td>
</tr>
<tr>
<td colspan="5" align="right" class="Stile5">.</td>
</tr>
<tr>
<td colspan="5" align="right" class="Stile5"></td>
</tr>
<tr>
<td>Allega file:</td>
<td colspan="3"><input type="file" name="allegato_1" /></td>
<td></td>
</tr>
<tr>
<td>Allega file:</td>
<td colspan="3"><input type="file" name="allegato_2" /></td>
<td></td>
</tr>
<tr>
<td>Allega file:</td>
<td colspan="3"><input type="file" name="allegato_3" /></td>
<td></td>
</tr>
<tr>
<td colspan="5" align="right" class="Stile5"></td>
</tr>
<tr>
<td align="right"></td>
<td></td>
<td><font face="Verdana">
<input type="submit" value="Invia" name="Submit">
</font></td>
<td></td>
<td></td>
</tr>
<tr>
<td align="right"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td align="right"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td align="right" valign="top"><font face="Verdana" size="2">[b]Stai scrivendo a:[/b]</font></td>
<td></td>
<td><font face="Verdana">
<input type="text" name="FriendName" size="18" value="Sicilia Report" readonly="">
<font size="2"> </font> </font> </td>
<td colspan="2"><font face="Verdana">
<input type="text" name="FriendEmail" size="32" value="lamiaemail@gmail.com" readonly="">
<font size="2" ></font></font></td>
</tr>
</table>
</div>
</form>
<?php
}
else {
if ($FriendEmail) {
require_once("class.phpmailer.php");
$mail = new PHPMailer();
$mail->From = $Email;
$mail->FromName = $Nome;
$mail->AddAddress($FriendEmail);
$mail->IsHTML(true);
$mail->Subject = $oggetto;
$mail->Body = $Commento."
".$Nome;
$mail->AltBody = $bodytxt;
$mail->AddAttachment($_FILES['allegato_1']['tmp_name'],$_FILES['allegato_1']['name']);
$mail->AddAttachment($_FILES['allegato_2']['tmp_name'],$_FILES['allegato_2']['name']);
$mail->AddAttachment($_FILES['allegato_3']['tmp_name'],$_FILES['allegato_3']['name']);
}
echo "<center>
<font face=Verdana size=2>Grazie <font color=red>$Nome</font>. Il tuo commento sar pubblicato previa supervisione della redazione.
[url='javascript:window.close();']Chiudi questa finestra[/url]</font>";
}
?>
</p>
</body>
</html>
Non arriva più nessuna email.
Eppure ho provato la classe in un altro modo, utilizzando i dati che ho trovato in due, tre discussioni, e funziona. L'unico inconveniente è che nel secondo modo non ho il controllo dati, e non riesco ad inserirlo.
Questo è il secondo modo:
il form
codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
</head>
<body>
<form action="formmail.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="destinatario" value="giuseppe.dibaudo@gmail.com">
<table border="0">
<tr>
<td>Nome e Cognome:</td>
<td><input type="text" name="nominativo" value="" /></td>
</tr>
<tr>
<td>Tua Mail:</td>
<td><input type="text" name="mittente" value="" /></td>
</tr>
<tr>
<td>Oggetto:</td>
<td><input type="text" name="oggetto" value="" /></td>
</tr>
<tr>
<td>Messaggio:</td>
<td><textarea cols="20" rows="4" name="messaggio"></textarea></td>
</tr>
<tr>
<td>Allega file:</td>
<td><input type="file" name="allegato_1" /></td>
</tr>
<tr>
<td>Allega file:</td>
<td><input type="file" name="allegato_2" /></td>
</tr>
<tr>
<td>Allega file:</td>
<td><input type="file" name="allegato_3" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Invia" /></td>
</tr>
</table>
</form>
</body>
</html>
e questa è la pagina php che invia la mail:
Codice PHP:
<?php
// Recupero il valore dei campi del form
$destinatario = $_POST['destinatario'];
$nominativo = $_POST['nominativo'];
$mittente = $_POST['mittente'];
$oggetto = $_POST['oggetto'];
$messaggio = $_POST['messaggio'];
$allegato_1 = $_FILE['allegato_1'];
$allegato_2 = $_FILE['allegato_2'];
$allegato_3 = $_FILE['allegato_3'];
require_once("class.phpmailer.php");
$mail = new PHPMailer();
$mail->From = $mittente;
$mail->FromName = $nominativo;
$mail->AddAddress($destinatario);
$mail->AddCC($mittente);
$mail->AddReplyTo($mittente);
$mail->IsHTML(true);
$mail->Subject = $oggetto;
$mail->Body = $messaggio."
".$nominativo;
$mail->AltBody = $bodytxt;
$mail->AddAttachment($_FILES['allegato_1']['tmp_name'],$_FILES['allegato_1']['name']);
$mail->AddAttachment($_FILES['allegato_2']['tmp_name'],$_FILES['allegato_2']['name']);
$mail->AddAttachment($_FILES['allegato_3']['tmp_name'],$_FILES['allegato_3']['name']);
if(!$mail->Send()){
echo "Si è verificato un errore nell'invio della mail";
}else{
echo "Mail inviata con successo";
}
?>
Avrei bisogno di aiuto per completare una delle due modalità in modo che sia funzionante sia la validazione dei dati, sia l'invio di più allegati.
Cosè più semplice? Aggiungere gli allegati alla prima soluzione, o aggiungere la validazione dati alla seconda soluzione ?
Vi prego aiutatemi...sto impazzendo