non ho accesso diretto ma cercherò di verificare questo.
Grazie di tutto
non ho accesso diretto ma cercherò di verificare questo.
Grazie di tutto
Ho fatto qualche piccola modifica perché con certi siti le email non arrivavano (se noti, nello script da te postato, tutto viene messo in headers, mentre il body dell'email resta inutilizzato).
Codice PHP:function mail_attachment($mailto, $from_mail, $from_name, $subject, $message) {
$attach = $_FILES['allegato']['tmp_name'];
$file_name = $_FILES['allegato']['name'];
$file_type = $_FILES['allegato']['type'];
$file_size = $_FILES['allegato']['size'];
$file = fopen($attach, "r");
$contents = fread($file, $file_size);
fclose($file);
$encoded_attach = chunk_split(base64_encode($contents));
// mia aggiunta
$MAX_DIM=100000;
if($file_size > $MAX_DIM) {
header("Location: error_page.php?attachsize=".$file_size);
} // in teoria se l'immagine allegato è superiore a 10024000 (byte) mi deve andare in pagina errore.(uscire) ma non va e prosegue lo script allegando ugualmente il file
$uid = md5(uniqid(time()));
$name = basename($attach);
$header = "From: ".$from_name." <".$from_mail.">\r\n";
$header .= "Reply-To: ".$replyto."\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
$body = "This is a multi-part message in MIME format.\r\n";
$body .= "--".$uid."\r\n";
$body .= "Content-type:text/html; charset=iso-8859-1\r\n";
$body .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$body .= $message."\r\n\r\n";
$body .= "--".$uid."\r\n";
$body .= "Content-Type: application/octet-stream; name=\"".$file_name."\"\r\n"; // use different content types here
$body .= "Content-Transfer-Encoding: base64\r\n";
$body .= "Content-Disposition: attachment; filename=\"".$file_name."\"\r\n\r\n";
$body .= $encoded_attach."\r\n\r\n";
$body .= "--".$uid."--";
if (mail($mailto, $subject, $body, $header)) {
header("Location: mail_ok.php");
}
else {
header("Location: error_page.php");
}
}
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
Se uso un'immagine poco pesante arriva a destinazione, quindi la funzione va bene
Ho provato la tua modificata e mi ritorna 3 errori:
Warning: fread(): supplied argument is not a valid stream riga 58
Warning: fclose(): supplied argument is not a valid stream riga 59
Warning: Cannot modify header information - headers already sent by (output started at riga 58) on line 94
Il problema è un'altro: non mi esegue il controllo, ho provato anche a modificare la riga
if($file_size > $dimenzione) {
header("Location: mail_errore.php");
}
in
if($file_size <> $dimenzione) { //DIVERSO
header("Location: mail_errore.php");
}
Ma anche qui non mi va a mail_errore.php
Proverò a chiedere aiuto ai gestori del server
I warning ce li hai perchè il file non arriva (scrivi ai gestori ). Gli @ che avevi prima in fase di sviluppo non vanno bene visto che sopprimendo i warning non ti accorgi di eventuali errori.
Sull'uso di <> per il controllo anche qui ho qualche riserva... a che pro?
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
il <> dovrebbe in ogni caso portare a mail_errore.php ed invece non esce quindi non fa prorpio il controllo (almeno credo non ce sto a capì più nulla)
Allora ricapitolando:
- le email con allegato piccolo riesci ad inviarle tranquillamente.
- le email con allegato "grande" nel tuo codice vengono inviate, ma suppongo arrivino senza allegato o con allegato vuoto. Con il mio codice invece ti dovrebbero generare i warning del caso e la pagina va (ovviamente) in errore (se stampa i warning, c'è già stato un output di qualche tipo ed il redirect non può andare a buon fine)
Puoi anche provare a caricare sul tuo server un file php con la sola istruzione:
e cercare queste 2 "direttive" sotto "PHP Core"Codice PHP:<?php
phpinfo();
?>
codice:max_execution_time max_file_uploads
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
hai ragione ho dovuto implementare nel codice la riga:
set_time_limit(150);
e impostare nel file .htaccess
le due righe:
php_value upload_max_filesize "10M"
php_value max_execution_time "20"
e ora funziona.
Se trova l'allegato superiore a $dimenzione mi va a mail_errore.php
altrimenti mi invia giusto con annesso allegato.
Grazie per il tuo tempo
ottimo. Saluti.![]()
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"